Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: "übergeordnetes" Object ansprechen

  Alt 28. Okt 2005, 23:49
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat