Hallo,
ich habe eine Klasse, zu der ich ein Setup Form erstellen möchte.
Das Setup Form soll in eine eigene
Unit, damit es die Klassenunit nicht zu unübersichtlich macht.
Das ganze soll etwa so aussehen:
Delphi-Quellcode:
uses SetupForm;
TMyRecord = record
a,b,c: string;
list = array of string;
end;
TMyList = array of TMyRecord;
TMyClass = class(TObject)
fVar1 : bolean;
fVar2 : integer;
fList : TMyList;
fSetupForm: TSetupForm;
private
constructor Create;
destruktor Destroy; override;
// weitere Methoden und Eigenschaften...
public
procedure Setup;
// weitere Methoden und Eigenschaften...
end;
implementation
procedure TMyClass.Setup;
begin
fSetupForm := TSetupForm.Create;
fSetupForm.Show;
end;
Dem Setup-Form würde ich gern eine Kopie der aufrufenden TMyClass Instanz mitgeben, damit dort alle Änderungen eingetragen werden können. Wenn dann das Setup Form mit OK geschlossen wird, möchte ich die Daten aus der Kopie übernehmen, ansonsten verwerfen.
Das Problem ist nur, dass ich keine Kopie mitgeben kann. Denn sowie ich im Public Bereich (oder sonst wo) des Formulars ein entsprechendes Feld einfüge, muss die TMyClass
Unit in die uses Liste der Setup-
Unit aufgenommen werden. Dann bekomme ich jedoch einen Fehler wegen überkreuzender
Unit-Bezüge.
Es ginge höchstens mit einem uses im Implementation Teil der Setup
Unit. Dann müsste ich mit einer globalen Instanzkopie arbeiten, was ich unbedingt vermeiden möchte.
Habe hier im Forum auch schon gelesen, dass man in solch einem Fall besser mit Eventhandlern arbeiten sollte. Das Setup Fromular sollte die Datenstruktur also gar nicht kennen. Wenn ich das mache, blase ich die Klassenunit aber so stark auf, dass ich letztendlich doch alles in eine
Unit hätte packen können.
Kann mir jemand einen Tip geben, wie ich mein PRoblem lösen kann?
Viele Grüße,
Stefan.