![]() |
Abgeleitete Formulare aus anderem Package in der IDE
Halli Hallo,
In einem Package habe ich mehrere Formulare die voneinander abgeleitet werden. Das gemeinsame Basisformular für diese Formulare ist in einem anderen Package enthalten. Dieses Package steht auch in den "requires" meines aktuellen Packages. Öffne ich eines der Formulare in der IDE dann wird diese Fehlermeldung erzeugt:
Code:
Der Tab "Design" in der IDE ist dann nicht vorhanden (klar, das Basis-Formular kann nicht gefunden werden, woher soll die IDE wissen, wie es auszusehen hat...)
Error creating form: Ancestor for 'TCustomBaseForm' not found.
Öffne ich in der IDE vorher das Basis-Formular aus dem anderen Package dann werden die Formulare ohne Fehler geöffnet und der Tab "Design" in der IDE ist auch auswählbar. Die IDE erkennt ja normalerweise an dem Kommentar in dem Projektquelltext der am Ende eines Eintrages in "contains" steht, welcher Typ zu laden ist:
Code:
Das funktioniert auch problemlos, solange das Basisformular sich im selben Package befindet oder solange es sich um eine Standard-Klasse wie "TForm" handelt.
contains
... frAbgeletet in 'abgeleitet.pas' {AbgeleitetesForm: TForm}, ... Kann man in dem Kommentar irgendwie die Package-Referenz auf die Basisklasse auflösen, so dass die IDE diese beim laden findet? Oder müsste man für das betreffende Basis-Package ein Designtime-Package erstellen und die Formularklasse dort für die IDE registrieren? Vielen Dank schon mal, Ralf |
AW: Abgeleitete Formulare aus anderem Package in der IDE
Hast du mal versucht, die beiden Packages in eine Projektgruppe zu packen und diese in der IDE zu öffnen?
|
AW: Abgeleitete Formulare aus anderem Package in der IDE
Zitat:
|
AW: Abgeleitete Formulare aus anderem Package in der IDE
Hast das Package mit dem Vorfahren auch als DesignTime in der IDE registriert, oder wird es nur zur Runtime verwendet?
Aus registrierten Packages und unregistriert aus dem selben Package macht hier selten Probleme, egal ob Nachfahre in anderem Package oder in einer DLL/EXE liegt. Nur lässt sich manchmal nicht die Unit des Vorfahren öffnen/schließen, wenn ein Nachfahre grad offen ist. Wenn das Package installiert ist, dann kannst du auch mal versuchen den Vorfahren mit ![]() ![]() ![]() Einziges Problem was ich mit Ableitungen hab, dass die IDE nicht die Klassen des Vorfahren verwendet (selbst wenn installiert/regisrtiert), sondern im FormDesigner immer eine Dummy-TForm-Instanz verwendet, wo der Constructor der Klasse dann nicht verwendet wird und auch die Published-Property nicht genutzt werden können. Selbes bei TFrames, die nicht als Komponente registriert wurden. |
AW: Abgeleitete Formulare aus anderem Package in der IDE
Zitat:
Vielleicht war mein Versuch nur zu einfach. Ich habe eine Projektgruppe mit zwei Packages mit jeweils einem Form, wobei das Form des zweiten Packages von dem des ersten abgeleitet ist. Alle Dateien geschlossen, Projektgruppe geschlossen und wieder geöffnet, zweites Form aufgemacht - kein Problem. Was allerdings auffällt: Innerhalb eines Packages werden keine Forms des anderen Packages zum Vererben angeboten. Das spricht schon gegen den Support eines solchen Konstrukts. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz