Autor Beitrag
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Di 23.08.05 11:48 
Hallo Leute!

Um in meiner Anwendung möglichst einfach mit Frames arbeiten zu können, habe ich mir eine Unterklasse von TFrame abgeleitet:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type
  TMFrame = class(TFrame)
  public
    procedure Initialize; virtualabstract;
    procedure Finalize; virtualabstract;
  end;

Nun lege ich (mit dem Delphi eigenen Menüpunkt) einen neuen Frame an, sodass ich ihn auch visuell bearbeiten kann und ändere einfach
ausblenden Delphi-Quelltext
1:
TFrame1 = class(TFrame)					

in
ausblenden Delphi-Quelltext
1:
TFrame1 = class(TMFrame)					

um. Allerdings führt das zu folgender "Katastrophe": Speichere ich das Projekt ab, schließe es und öffne es dann wieder (bzw. gehe ich beim Frame auf "Als Text anzeigen" und dann wieder mit Alt+F12 auf "Formular anzeigen") kommt: "Fehler beim Lesen von frame1.TabOrder: Eigenschaft TabOrder existiert nicht.. Den Fehler [...]". Das gleiche auch bei TabStop. Warum? Diese Eigenschaften muss es doch bei TMFrame genauso geben, da von TFrame abgeleitet und nur 2 Prozeduren hinzugefügt.
Wenn ich die beiden Eigenschaften entferne, gibt es ein chaos. Der Frame passt nicht mehr richtig und im Formular-Editor wird ein Rahmen um ihn herum gezeichnet. (HÄ???)
Woran liegt das? Was mache ich falsch? Darf ich in dieser Art und weise einen Frame nicht ableiten?

thx
Alstar
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Di 23.08.05 12:07 
user profile iconAlstar hat folgendes geschrieben:
Nun lege ich (mit dem Delphi eigenen Menüpunkt) einen neuen Frame an, sodass ich ihn auch visuell bearbeiten kann und ändere einfach
ausblenden Delphi-Quelltext
1:
TFrame1 = class(TFrame)					

in
ausblenden Delphi-Quelltext
1:
TFrame1 = class(TMFrame)					

um.


Ganz einfach. Öffne die zugehörige dfm Datei des Frames (ggf. in einem externen Editor) und änder das erste Wort in der ersten Zeile von "object" in "inherited".
Das sollte es gewesen sein.

Bis neulich ...
Alstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Di 23.08.05 12:19 
Jetzt kommt "Fehler beim Erzeugen von Formular: Vorfahr für 'TMFrame' nicht gefunden".
Muss ich das noch irgendwo definieren?

Alstar
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Di 23.08.05 12:25 
Nö, das ist nur ein Delphi-Bug.
Schließ einfach mal alle geöffneten Forms und Frames, dann öffnest Du TMFrame und anschließend die gewünschte Ableitung.

Bis neulich ...
Alstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Di 23.08.05 12:30 
user profile iconGrendel hat folgendes geschrieben:
[...]dann öffnest Du TMFrame und anschließend die gewünschte Ableitung.[..]


Kapier ich nicht. Der Frame ist doch die Ableitung von TMFrame (und TMFrame eine Ableitung von TFrame). Und das mit dem Schließen und neu Öffnen bringt den gleichen Fehler zu Tage (Vorfahrtyp nicht gefunden) :cry:

Alstar
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Di 23.08.05 12:38 
Zitat:
Der Frame ist doch die Ableitung von TMFrame

Ja richtig. Deswegen erst TMFrame öffnen und dann die Ableitung also den Frame.
Wichtig ist, daß TMFrame nach dem öffnen auch wirklich angezeigt wird. Wenn nicht wars das eh schon.

Bis neulich ...
Alstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Di 23.08.05 12:45 
Das ist es doch. TMFrame ist nur eine Klasse. Da gehört kein Formular dazu.

Alstar
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Di 23.08.05 13:00 
user profile iconAlstar hat folgendes geschrieben:
Das ist es doch. TMFrame ist nur eine Klasse. Da gehört kein Formular dazu.

Ahh.. dann ist das der Fehler. Formular- bzw. Frame-Basisklassen müssen natürlich auch ein dfm mitbringen.

Bis neulich ...
Alstar Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Di 23.08.05 13:49 
Danke, jetzt funzt's!

Alstar