Delphi-PRAXiS

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 Fehler beim Laden von abgeleiteten Frame (https://www.delphipraxis.net/214814-fehler-beim-laden-von-abgeleiteten-frame.html)

MyRealName 14. Mär 2024 08:06

Fehler beim Laden von abgeleiteten Frame
 
Ich habe mir für ein Anwendung ein Basis Frame mit interface und Standart-Funktionen gebastelt.
Davon abgeleitet habe ich neue Frames, die ich dann mit Leben fülle.
Wenn ich allerdings das Projekt lade, und dann eins der abgeleiteten Frame versuche zu öffnen, dann bekomme ich den Fehler "Error creating form in NeuesFrame1.dfm: Ancestor for "TmyBaseFrame" not found" (Namen wegen Schutz der Persönlichkeitsrechte der Frames geändert, ich will nicht, dass die im Verzeichnis gemobbt werden :-D).

Habe ich das Basis Frame allerdings geöffnet, geht es ohne Probleme.
Alle Frames sind im Projekt verfügbar und in der DFM der abgeleiteten Frames startet es mit inherited, nicht object.
Ich nutze Delphi 11.3

Weiss einer, wie man das wegbekommt ?

Der schöne Günther 14. Mär 2024 08:11

AW: Fehler beim Laden von abgeleiteten Frame
 
Ich nutze das genauso hundertfach.

Wenn du notgedrungen schon so tief eingestiegen bist und dir die DFM-Dateien angeschaut hast, ist dir sonst nichts aufgefallen? Vielleicht redundante Angaben in NeuesFrame1, die in MyBaseFrame nicht (mehr) existieren?

Ich bekomme so etwas öfter weg, wenn ich z.B. die .dpr-Datei (oder eine Nur-Code-Datei ohne Formular dahinter) öffne, alle anderen Tabs schließe, und dann das Projekt bereinige.

Kannst du vielleicht alles aus den Frames/Forms entfernen das nicht notwendig ist und ein leeres Beispiel hier hochladen, bei dem das Problem immer noch auftritt?

peterbelow 14. Mär 2024 08:52

AW: Fehler beim Laden von abgeleiteten Frame
 
Zitat:

Zitat von MyRealName (Beitrag 1534621)
Ich habe mir für ein Anwendung ein Basis Frame mit interface und Standart-Funktionen gebastelt.
Davon abgeleitet habe ich neue Frames, die ich dann mit Leben fülle.
Wenn ich allerdings das Projekt lade, und dann eins der abgeleiteten Frame versuche zu öffnen, dann bekomme ich den Fehler "Error creating form in NeuesFrame1.dfm: Ancestor for "TmyBaseFrame" not found" (Namen wegen Schutz der Persönlichkeitsrechte der Frames geändert, ich will nicht, dass die im Verzeichnis gemobbt werden :-D).

Habe ich das Basis Frame allerdings geöffnet, geht es ohne Probleme.
Alle Frames sind im Projekt verfügbar und in der DFM der abgeleiteten Frames startet es mit inherited, nicht object.
Ich nutze Delphi 11.3

Weiss einer, wie man das wegbekommt ?

Sowas kann passieren wenn man den vorgesehenen Mechanismus der IDE zum Erstellen abgeleiteter Frames (oder auch Forms/Datamodules) umgeht. Wenn man wie vorgesehen über File -> New -> Others -> inheritable items (d. h. den repository Dialog) geht erzeugt die IDE nämlich im DPROJ-File des Projektes Einträge wie

Code:
        <DCCReference Include="LM_AdmeTestDetailFrameU.pas">
            <Form>LM_AdmeTestDetailFrame</Form>
            <DesignClass>TFrame</DesignClass>
        </DCCReference>
Der kritische Teil ist die Angabe unter dem DesignClass-Node, der fehlt mitunter, wenn man eine abgeleitete Klasse "zu Fuß" erzeugt. Das führt auch dazu, dass die Frameklasse in der Liste der verfügbaren Frames für das Projekt nicht auftaucht.

Uwe Raabe 14. Mär 2024 09:07

AW: Fehler beim Laden von abgeleiteten Frame
 
Bezüglich der DPR ist auch darauf zu achten, dass dort in der uses-Anweisung hinter dem Unit- und Dateinamen ein Kommentar
Delphi-Quellcode:
{<FrameName>: TFrame}
steht.
Der fehlt in der Regel (oder ist nicht vollständig) wenn das von Peter beschriebene Szenario vorliegt.

Probleme kann es auch in Projektgruppen geben, wenn das aktuelle Projekt nicht dem entspricht, das den relevanten Frame enthält. Dann kann die IDE den auch nicht finden.

MyRealName 14. Mär 2024 10:33

AW: Fehler beim Laden von abgeleiteten Frame
 
Danke für die Antworten.
Ob die Frames über die Delphi IDE abgeleitet hatte, wie peter below es beschrieben hatte, weiss ich nicht mehr. Aber ich achte jetzt mal drauf es immer so zu machen.
In dem DPR file waren zumindest die in gescheiften Klammern angegebenen Klassennamen drin. So wie Uwe es auch geschrieben hatte.
Gelöst habe ich es jetzt so, dass ich ein komplett leeres Projekt erzeugt habe und wieder alles eins nach dem anderen hinzugefügt habe. Der Fehler ist dadurch erstmal weg.

Danke an die Tipps...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.

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