Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#15

Re: Fragen zu Umgang mit Packages und Forms

  Alt 12. Dez 2005, 08:40
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
  Mit Zitat antworten Zitat