AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Abgeleitete Formulare aus anderem Package in der IDE

Abgeleitete Formulare aus anderem Package in der IDE

Ein Thema von Ralf Kaiser · begonnen am 17. Apr 2020 · letzter Beitrag vom 17. Apr 2020
Antwort Antwort
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
921 Beiträge
 
Delphi 10.3 Rio
 
#1

Abgeleitete Formulare aus anderem Package in der IDE

  Alt 17. Apr 2020, 09:24
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
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.819 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Abgeleitete Formulare aus anderem Package in der IDE

  Alt 17. Apr 2020, 10:03
Hast du mal versucht, die beiden Packages in eine Projektgruppe zu packen und diese in der IDE zu öffnen?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
921 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Abgeleitete Formulare aus anderem Package in der IDE

  Alt 17. Apr 2020, 12:00
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.
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.731 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Abgeleitete Formulare aus anderem Package in der IDE

  Alt 17. Apr 2020, 12:05
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (17. Apr 2020 um 12:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.819 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Abgeleitete Formulare aus anderem Package in der IDE

  Alt 17. Apr 2020, 15:22
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf