Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Frames und Vererbung (https://www.delphipraxis.net/58908-frames-und-vererbung.html)

sh17 15. Dez 2005 05:38

Re: Frames und Vererbung
 
Das Problem liegt in den DFM-Dateien.

Für Deine Basisklasse hast Du eine DFM.Datei und für die abgeleitete auch. Das geht nicht. woher soll die klasse wissen, welche DFM sie nehmen soll?

Lösung:

Deine Basisklasse nur von TFrame ableiten. Die Ressource {$R *.dfm} löschen.

In Deiner richtigen Klasse TMyFrame kassnt Du dann die Elemente auf das Frame packen.

Jens Schumann 15. Dez 2005 07:07

Re: Frames und Vererbung
 
Zitat:

Zitat von omata
Hallo Jens,
Also ich habe folgendes gemacht...

1. Projekt geöffnet.
2. Die beiden Fehlermeldungen mit Ignorieren bestätigt
3. Unit3 geöffnet
4. Unit3 aus der linken oberen Ecke ziehen (irgendwo anders hin)
4. Unit1 auch verschieben (minimal, damit Speichern möglich wird)
5. Projekt speichern, Fehlermeldung mit ja bestätigen

fertig.

Ich weiss nicht wie in unit3 oder unit1 verschieben soll. Ich habe die Fehlermeldung ignoriert und ein Leezeichen hinzugefügt damit
ich das Projekt speichern kann. -> Kein Erfolg


Zitat:

Zitat von sh17
Das Problem liegt in den DFM-Dateien.

Für Deine Basisklasse hast Du eine DFM.Datei und für die abgeleitete auch. Das geht nicht. woher soll die klasse wissen, welche DFM sie nehmen soll?

Lösung:

Deine Basisklasse nur von TFrame ableiten. Die Ressource {$R *.dfm} löschen.

In Deiner richtigen Klasse TMyFrame kassnt Du dann die Elemente auf das Frame packen.

Ich habe die {$R *.dfm} in der unit für die Basisklasse gelöscht. -> Kein Erfolg.

Wie omata schon richtig bemerkt hat sind Frame gerade zu genial um Benutzeroberflächen zu realisieren. Das mache ich auch schon einige Zeit. Jede Oberflächenmaske bekommt Ihren eigenen Frame. Alle Frames haben Gemeinsamkeiten, die ich der Vergangenheit in jedem einzelnen Frame wiederholt habe. Dadurch ist natürlich eine Redundanz entstanden, die schlecht zu warten ist. Jetzt wollte ich mir die Mechanismen der OOP zu nutze machen und eine Basisklasse für die Gemeinsamkeiten verwenden. Leider hat hier D7 (D5 auch) scheinbar einen Bug.

sh17 15. Dez 2005 08:10

Re: Frames und Vererbung
 
Zitat:

Kein Erfolg.
Was passiert denn da?

In der Basisklasse dürfen dann natürlich keine Controls enthalten sein.

Jens Schumann 15. Dez 2005 08:20

Re: Frames und Vererbung
 
Zitat:

Zitat von sh17
Zitat:

Kein Erfolg.
In der Basisklasse dürfen dann natürlich keine Controls enthalten sein.

Hallo ,
in der Basisklasse sind keine Controls enthalten. Ist auch nicht nötig.
Es kommt der gleiche Fehler wie oben beschrieben.

sh17 15. Dez 2005 08:28

Re: Frames und Vererbung
 
hab noch mal Dein Beispiel beguckt. Das Problem liegt bei der Deklaration in Form1 (Warum genau das so ist, weiß ich auch nicht)

Du musst das Frame in einem eigenen privat-Bereich deklarieren und im Create des Forms von Hand das Frame erzeugen. Dann sollte es gehen.

sh17 15. Dez 2005 08:33

Re: Frames und Vererbung
 
achso, und in Deinem Beispiel scheinst Du TFrameNachfahre mal aus einem TForm in ein TFrameBase umgewandelt zu haben. Du musst ein neues Frame erstellen und dann die Elternklsase TFrame in TFrameBase abändern

EDIT: damit dürfte sich meiner vorheriger Beitrag erledigt haben

Jens Schumann 15. Dez 2005 08:34

Re: Frames und Vererbung
 
Zitat:

Zitat von sh17
hab noch mal Dein Beispiel beguckt. Das Problem liegt bei der Deklaration in Form1 (Warum genau das so ist, weiß ich auch nicht)

Du musst das Frame in einem eigenen privat-Bereich deklarieren und im Create des Forms von Hand das Frame erzeugen. Dann sollte es gehen.

Hmmm Hmmm Hmmm. Das Beispiel enthält zwar zwei Frames aber keiner von beiden wird verwendet. Trotzdem kommt der Fehler.
Der Fehler kommt wenn ich das Projekt öffne. Nicht wenn ich das Projekt starte!
Könntest Du bitte mein Beispiel so verändern das es funktioniert?

Jens Schumann 15. Dez 2005 08:37

Re: Frames und Vererbung
 
Zitat:

Zitat von sh17
achso, und in Deinem Beispiel scheinst Du TFrameNachfahre mal aus einem TForm in ein TFrameBase umgewandelt zu haben. Du musst ein neues Frame erstellen und dann die Elternklsase TFrame in TFrameBase abändern

EDIT: damit dürfte sich meiner vorheriger Beitrag erledigt haben

Natürlich habe ich nicht aus einem TForm einen TFrame gebastelt. TFrameNachfahre ist von Anfang an ein TFrame gewesen. Wenn ich das Projekt wieder öffne kommt der Fehler, dass die Eigenschaft TabOrder nicht gefunden wird. Wenn ich den Fehler ignoriere sieht TFrameNachfahre im Objektinspektor aus wie ein TForm.

sh17 15. Dez 2005 08:57

Re: Frames und Vererbung
 
hier die Antwort von OLLI_T

tomsel 15. Dez 2005 09:26

Re: Frames und Vererbung
 
Noch ein Gedanke:
Delphi verhaspelt sich bei den Frames, wenn man dem Projekt einen neuen Frame hinzufügt und anschließend die Deklaration so abändert, dass der Frame von einem anderen abgeleitet wird. Wenn man den Baseframe der Objektablage hinzufügt und den Nachfahren dann direkt vom Baseframe erben lässt, klappt es. Der Unterschied liegt in den DFM-Dateien. Diese beginnt bei einem "normalen" Frame mit 'object', bei einem abgeleiteten aber mit 'inherited'.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz