Die gegenseite Einbindung könntest du damit lösen das du die beiden Klassen in eine
Unit implementierst. Dabei musst du nicht zwangsläufig auch die Methoden in der gleichen
Unit haben. Du könntest für beide Klassen (die in verschiedenen Units sind) jeweils eine Basisklasse machen mit abstrakten Methoden und diese Methoden überschreibst du dann in den entsprechenden einzelnen Units:
Unitx:
Delphi-Quellcode:
[...]
type
TBasisKlasse2 = class;
TBasisKlasse1 = class(TObject)
public
RefToClass2: TBasisKlasse2;
procedure MethodeVonKlasse1; abstract;
end;
TBasisKlasse2 = class(TObject)
public
RefToClass1: TBasisKlasse1;
procedure MethodeVonKlasse2; abstract;
end;
Unit Klasse1:
Delphi-Quellcode:
[...]
uses Unitx;
[...]
type
TKlasse1 = class(TBasisKlasse1)
public
procedure MethodeVonKlasse1; override;
end;
[...]
procedure TKlasse1.MethodeVonKlasse1;
begin
if RefToClass2 <> nil then
RefToClass2.MethodeVonKlasse2;
end;
Unit Klasse2:
Delphi-Quellcode:
[...]
uses Unitx;
[...]
type
TKlasse2 = class(TBasisKlasse2)
public
procedure MethodeVonKlasse2; override;
end;
[...]
procedure TKlasse2.MethodeVonKlasse1;
begin
if RefToClass1 <> nil then
RefToClass1.MethodeVonKlasse1;
end;
Durch das deklarieren der abstracten Methoden können also die einzelnen Klassen auch auf die Methoden der anderen Klassen zugreifen. Um die Übersichtlichkeit zu wahren kannst du natürlich auch die "unitX2" in 2 units aufspalten welche dann jeweils nur eine Basisklasse enthält.