Einzelnen Beitrag anzeigen

changlee
(Gast)

n/a Beiträge
 
#1

Klasse soll Setup Form bekommen --> überkreuzende Bezüge

  Alt 31. Okt 2009, 20:13
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.
  Mit Zitat antworten Zitat