Noch eine Anmerkung zum Thema Programmierstil:
Nehmen wir an, es gibt viele Anwendungen in eine FSuchForm benötigen.
Man könnte diese in eine
DLL auslagern.
Oder man ruft alle Formulare aus einem Datamodul (DM) auf, welches von sämtlichen Anwendungen verwendet wird.
Man hat dann auch nicht das Problem, dass sämtliche Formulare viele units, in denen die anderen Formularen deklariert sind, eingebunden werden müssen. Es muss immer nur das Datamodul eingebunden werden. Im Datamodul sind die notwendigen units eingebunden.
Das Datamodul stellt nun durch Hilfsroutinen den Zugriff auf die Formulare her. Auch die Verbindung zu Datenquellen.
Also nicht:
Delphi-Quellcode:
Frm:= TSuchForm.Create(Self);
try
// Frm.xxx
finally
Frm.Free;
end;
sondern:
DM.Get_SuchFormItemNr; // in Get_SuchFormItemNr wir alles gemacht, was notwendig ist um das Formular anzuzeigen.
Im Datamodul steht nun das
Delphi-Quellcode:
function DM.Get_SuchFormItemNr: integer;
begin
result:= -1; // Initialisierung
if not Assigned(FSuchForm) then
Application.CreateForm(TFSuchForm, FSuchForm);
if FSuchForm.Showmodal = mrOK then
result:= FSuchForm.ItemNr
else
result:= -2; // z.B. besser Konstanten deklarieren
end;
Nachteil:
Delphi gibt ggf. Warnungen aus "deklariert, aber nicht verwendet" aus.
Die einzelnen Anwendungen (exe) werden ein bisschen größer, da der Linken nicht intelligent genug ist.
Es dürfen in einem Projektteam nicht zu viel Leute am Datamodul rumfummeln.
Bei Fachanwendungen kann im Datamodul der Datenbankzugriff gekapselt werden, nicht jeder Dr.-Ing. muss davon Ahnung haben.
Wenn es nur eine große Anwendung gibt, dann kann die Logik auch ins Hauptformular und muss nicht ins Datamodul.