Ich habe so den Eindruck das ihr aneinander vorbei redet.
Hansa erklärt einen Weg wie man Formulare über Vererbungen in seinen Projekten besser nutzen kann. Dies kann man in Single-EXEs, DLLs oder eben auch
Package basierten Anwendungen.
Der letzter Fall ist die eigentliche Frage, nämlich das WIE.
Zuerst organisierst du mal eine Anwendung strukturell:
1.) Hauptform, mit Menusystem, Registrations Funktionen deiner exterenen Module
2.) Basis Datamodul das den Erstzugriff auf deine
DB über ZEOS initialisiert und ansonsten einige Standard Dataset enthalten kann.
All dies baust du in ein
Package mit zb. Namen Main.bpl rein. Da das ein
Package ist müssen somit auch alle Komponenten wie
VCL und eben ZEOS ebenfalls als Packages vorliegen !
Dann baust du deine Main.EXE. Diese ist eine EXE die nur Eines macht, sie bindet dein Main.bpl ein und erzeugt dein TMainForm + TDataModul daraus. Mehr nicht. Diese EXE wird ca. 30-70Kb groß sein.
Und jetzt möchtest du deine eigentlichen Formulare bauen. Dazu musst du eine
DLL erzeugen in die du zb. dein neues TForm1 aus der
Unit Unit1.pas einfügst. In den Projektoptionen angeben das mit Packages gearbeitet werden soll und dort auch die packages Main und Zeos angeben.
In deiner Unit1.pas kannst du nun ganz einfach die
Unit MainForm.pas auf dem
Package Main.bpl in die Uses Klausel aufnehmen. Dein TForm1 aus Unit1 hat also direkten Zugriff auf das TMainForm aus der
Unit MainForm.pas im
Package Main.bpl. Du arbeitest quasi so als hättest du eine Single EXE Anwendung.
Das gleiche geht mit deinem TDataModule das ebenfalls in Main.bpl initegriert wurde.
ABER! Alles was du ins Main.bpl reinbastelst solltest du nicht ständig im Interface verändern, da dies dazu führt das alle davon abhänigen Module neu compiliert werden müssen.
So, in dieses Konzept kannst du nun auch wiederum Hansa's vererbte Formulare benutzen. Das Basis Formular kämme dan n in das
Package Main.bpl und zu diesem Main.bpl (das ja Runtime-only ist) benötigen wird noch ein DclMain.bpl. Dieses ist der DesignTime-Part zu Main.bpl und wird in die Delphi
IDE installiert. Somit kannst du nun direkt weitere Formulare von alle den in Main.bpl enthaltenen Basis-Forms ableiten und vererben.
Das geht, und ich habe das schon im D3 einige Monate in unserer Packagebasiertem Frame benutzt. Allerdings lernten wir sehr schnell das zumindestens in D3 diese Vorgehensweise enorm instabil und wenig praktikabel in der Entwicklung eines Teams ist. Der Große Vorteil dieser Forms ist nämlich immer dann wenn man eigene Frmenstandards in Punkto Styling etc. durchsetzen möchte. Alle Programmierer müssen dann solche Repositories benutzen.
Auf Grund der Schierigkeiten im D3 bei der korrekten Einbindung der nun ebenfalls vererbbaren
DFM Resourcen, denn nun besteht eine
DFM aus 2 DFMs die un unterschiedlichen Resourcen unterschiedlicher Module gespeichert sind die D3 eben nicht korrekt laden konnte, haben wird es einfach über normale Klasssenvererbung gemacht. Alle wichtigsten Änderungen wurden in eine neue Klasse wie TWin95Form eingebettet und diese in das Main.bpl als Klasse eingebunden. Alle Modul-Forms mussten dann diese Klasse als Vorfahr angeben. Dies ist wesentlich stabiler in der Produktion als mit Repositories zu arbeiten.
Gruß Hagen