使用Tcollection在delhi中保存vcl对象引用

时间:2011-02-14 15:50:23

标签: delphi reference tcollection

我正在使用delphi 2009和VCL组件。我创建了一个名为的集合 TStreets由TStreet项目组成,只有两个私有字段。现在我需要补充一下 到Tstreet类另一个字段/属性来跟踪(通过使用引用)的 TMyObject类的其他对象。

一个例子:让我们假设TStreet集合包含五个元素和十个对象 (TMyObject)在运行时存在于我的应用程序中。 TMyObject的每个对象都可以归属 只有一个TStreet所以我需要为每个TStreet保存对象的所有引用 然后能够将一个或多个对象引用从一个TStreet移动到另一个TStreet。 我应该在TStreet下创建另一个保存对象引用的集合吗?

走的路是否正确?

1 个答案:

答案 0 :(得分:4)

鉴于以下内容。

TMyObject = class
  ...
end;

TStreet = class
 ...
 public
   property MyObject : TMyObject ...;
end;

TStreets = TList<TStreet>;

从阅读您的问题看来,TMyObject只能绑定到一个TStreet。

然后我建议撤消参考文献。

TStreet = class;

TMyObject = class
protected
  FStreet : TStreet;
public
  property Street : TStreet read FStreet write FStreet;
end;

TMyObjectList = TList<TMyObject>;

TStreet = class
 private
   // Looks through MyObjectList returning correct 
   function GetMyObjecty : TMyObject; reference.
 public
   property MyObject : TMyObject read GetMyObject;
   // Reference to list that contains all instance of TMyObjectList.
   property MyObjectList : TMyObjectList; 
end;

TStreets = TList<TStreet>;

TMyObjectList = TList<TMyObject>;