Saving vcl objects references in dephi with Tcollection

不打扰是莪最后的温柔 提交于 2019-12-22 18:26:36

问题


I am using delphi 2009 and VCL components. I have created a collection called TStreets made of items TStreet which has just two private fields. Now I need to add to Tstreet class another field/property to keep track (by using reference) of other objects of class TMyObject.

An example: let's assume that TStreet collection contains five elements and ten objects (TMyObject) exists in my application at run-time. Each objects of TMyObject can belong to only one TStreet so I need to save for each TStreet all reference of objects and then be able to move one or more object reference from one TStreet to another. Should I create another colletion under TStreet where saving object references?

Is it correct the way to go?


回答1:


Given the following.

TMyObject = class
  ...
end;

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

TStreets = TList<TStreet>;

It appears from reading your question that a TMyObject can only be tied to one TStreet.

Then I would recommend reversing the references.

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>;


来源:https://stackoverflow.com/questions/4994167/saving-vcl-objects-references-in-dephi-with-tcollection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!