Du musst nicht unbedingt einen eigenen Konstruktor erstellen.
Man kann Objekte und Daten auch über Properties und/oder Methoden übergeben.
Es gibt grundsätzlich 3 Wege über die man einem Objekt Daten mitgeben kann.
1.) Konstruktor (constructor injection)
2.) Properties (property injection)
3.) Methoden (method injection)
Normalerweise wählt man
constructor injection.
Sollte das Probleme machen (und bei Delphi-Formularen macht das Probleme, weil es schon einen virtuellen Konstruktor gibt), dann kann man auch
property injection oder
method injection verwenden.
Delphi-Quellcode:
// Beispiel für Property Injection
TfrmMaster = class(TForm)
private
FMyParams : TMyParams;
public
property MyParams:TMyParams read ... write ...;
end;
TfrmAdressen = class(TfrmMaster)
...
end;
// und später dann das erzeugen
var
neuForm : TForm;
fclass : TFormClass;
begin
fclass := TfrmAdressen;
neuForm := fclass.Create(Application);
TfrmMaster(neuForm).MyParams := ....;
Dieses Einspeisen der Parameter über ein Property hat den Nachteil,
dass man das Setzen des Properties auch vergessen könnte.
Beim Konstruktor wird die Übergabe des Parameter-Objekts ja quasi vom Kompiler erzwungen.
Allerdings ist die Übergabe der Daten per Property deutlich einfacher;
insbesondere muss man keine Klimmzüge mit TFormClass & Co machen.