Hi!
Also irgendwie weiss ich überhaupt nicht, wovon geredet wird. Zunächst dachte ich "Hmm, da hat einer eine Frage zur Aggregation." Dann aber "Oh, er hat ein Problem mit der Referenzierung zwischen Units!". Doch dann las ich Klabautermanns Beitrag, der etwas von Vererbung & Co. erzählte...
Ich gehe einfach mal davon aus, daß du gerne wüsstest, wie du von einem Unterobjekt auf das beinhaltende Objekt zugreifst.
Ich mache es immer so, daß ich eine Eigenschaft Owner (ähnlich wie in TComponent realisiert) den Unterobjekten mitgebe, so dass ich dann per Typkonvertierung das Mutterobjekt ansprechen kann.
Bsp:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| unit u1;
interface
uses u2;
type TMutterklasse=class(TObject) public Benutzer:String; UnterObjekt:TUnterobjekt; function MeineFunktion:Boolean; end; ... |
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| unit u2;
interface
type TUnterObjekt=class(TObject) public Owner:TObject; function Benutzer:string; end;
implementation
//Realisierung der Referenz im Implementationbereich, ansonsten //nicht zulässiger zirkulärer Verweis uses u1;
function TUnterObjekt.Benutzer:string; begin Result:=TMutterklasse(Owner).Benutzer; end; |
Wenn du allerdings direkt den Owner als TMutterklasse deklarieren willst, müssen die zwei Klassen in derselben Unit sein.
Eine weitere Methode ist die Referenzierung über Interfaces, wo dann gar kein direkter Bezug der Units untereinander sein muss.
Cu,
Udontknow