我正在使用delphi 2009和VCL组件。我创建了一个名为的集合 TStreets 由项目组成 TStreet 只有两个私有(private)字段。现在我需要添加 到 Tstreet 类的另一个字段/属性来跟踪(通过使用引用) TMyObject 类的其他对象。
示例:假设 TStreet 集合包含五个元素和十个对象 (TMyObject) 在运行时存在于我的应用程序中。 TMyObject 的每个对象都可以属于 仅一个 TStreet,因此我需要为每个 TStreet 保存所有对象的引用和 然后能够将一个或多个对象引用从一个 TStreet 移动到另一个。 我应该在 TStreet 下创建另一个集合来保存对象引用吗?
这条路正确吗?
最佳答案
鉴于以下情况。
TMyObject = class
...
end;
TStreet = class
...
public
property MyObject : TMyObject ...;
end;
TStreets = TList<TStreet>;
从阅读你的问题来看,一个 TMyObject 只能绑定(bind)到一个 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>;
关于delphi - 使用 Tcollection 在 delhi 中保存 vcl 对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994167/