Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Abgeleitete Formulare aus anderem Package in der IDE (https://www.delphipraxis.net/204035-abgeleitete-formulare-aus-anderem-package-der-ide.html)

Ralf Kaiser 17. Apr 2020 08:24

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:
Error creating form: Ancestor for 'TCustomBaseForm' not found.
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...)

Ö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:
contains
   ...
   frAbgeletet in 'abgeleitet.pas' {AbgeleitetesForm: TForm},
   ...
Das funktioniert auch problemlos, solange das Basisformular sich im selben Package befindet oder solange es sich um eine Standard-Klasse wie "TForm" handelt.

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

Uwe Raabe 17. Apr 2020 09:03

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?

Ralf Kaiser 17. Apr 2020 11:00

AW: Abgeleitete Formulare aus anderem Package in der IDE
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1462315)
Hast du mal versucht, die beiden Packages in eine Projektgruppe zu packen und diese in der IDE zu öffnen?

Ja. Alle Packages befinden sich (schon immer) in einer gemeinsamen Projektgruppe.

himitsu 17. Apr 2020 11:05

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 Delphi-Referenz durchsuchenRegisterComponents Delphi-Referenz durchsuchenRegisterNoIcon und/oder Delphi-Referenz durchsuchenRegisterClasses zu registrieren.

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.

Uwe Raabe 17. Apr 2020 14:22

AW: Abgeleitete Formulare aus anderem Package in der IDE
 
Zitat:

Zitat von Ralf Kaiser (Beitrag 1462334)
Ja. Alle Packages befinden sich (schon immer) in einer gemeinsamen Projektgruppe.

Kannst du das mal in einer simplen Test-Projektgruppe reproduzieren?

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 18:04 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