2

私はdelphi2009とVCLコンポーネントを使用しています。プライベートフィールドが2つしかないアイテムTStreetで構成されるTStreetsというコレクションを作成しました。次に、クラスTMyObjectの他のオブジェクトを(参照を使用して)追跡するために、Tstreetクラスに別のフィールド/プロパティを追加する必要があります。

例:TStreetコレクションに5つの要素が含まれ、実行時に10個のオブジェクト(TMyObject)がアプリケーションに存在するとします。TMyObjectの各オブジェクトは1つのTStreetにのみ属することができるため、TStreetごとにオブジェクトのすべての参照を保存してから、1つ以上のオブジェクト参照を1つのTStreetから別のTStreetに移動できるようにする必要があります。オブジェクト参照を保存するTStreetの下に別のコレクションを作成する必要がありますか?

行く道は正しいですか?

4

1 に答える 1

4

次のように与えられます。

TMyObject = class
  ...
end;

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

TStreets = TList<TStreet>;

あなたの質問を読んだところ、TMyObjectは1つの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>;
于 2011-02-14T17:26:55.460 に答える