type
TObject2 = class;
{ TObject1 }
TObject1 = class
private
FObject2 : TObject2;
procedure setObj2(obj2: TObject2);
public
property Object2 : TObject2 read FObject2 write setObj2;
end;
{ TObject2 }
TObject2 = class
Object1s : array of TObject1;
procedure AddObj1 (obj1: TObject1);
end;
var
ObjectList1 : TFPGList<TObject1>;
ObjectList2 : TFPGList<TObject2>;
implementation
{ TObject2 }
procedure TObject2.AddObj1(obj1: TObject1);
begin
SetLength(Object1s, Length(Object1s) + 1);
Object1s[High(Object1s)] := Obj1;
end;
{ TObject1 }
procedure TObject1.setObj2(obj2: TObject2);
begin
FObject2 := obj2;
if obj2 <> nil then Obj2.AddObj1 (Self);
end;