を使用しTObjectList<TCustomFrame>
て保存していTCustomFrames
ます。TCustomFrame
今、同じリストに関連する情報をいくつか保存したいと思います。Arecord
でいいでしょう。
同じリストに保存TCustomFrames
したい Delphi クラスはどれですか?records
TCustomFrames
andはrecords
実行時に追加されます。
すべての情報を保持する単一のレコードを作成します。
type
TFrameInfo = record
Frame: TCustomFrame;
Foo: string;
Bar: Integer;
end;
それを に保持しTList<TFrameInfo>
ます。
TObjectList<T>
ではなくを使用していたことに注意してくださいTList<T>
。OwnsObjects
これを行う唯一の正当な理由は、に設定している場合ですTrue
。しかし、リストが実際に GUI オブジェクトの存続期間を担当しているとは思えないので、それはありそうにないようです。将来の注意として、set toを使用TObjectList<T>
している場合は、 に切り替えることもできます。OwnsObjects
False
TList<T>
ここで、ライフタイムを制御するためにリストが必要な場合は、レコードではなくクラスを使用することをお勧めしますTFrameInfo
。
type
TFrameInfo = class
private
FFrame: TCustomFrame;
FFoo: string;
FBar: Integer;
public
constructor Create(AFrame: TCustomFrame; AFoo: string; ABar: Integer);
destructor Destroy; override;
property Frame: TCustomFrame read FFrame;
// etc.
end;
constructor TFrameInfo.Create(AFrame: TCustomFrame; AFoo: string; ABar: Integer);
begin
inherited Create;
FFrame := AFrame;
// etc.
end;
destructor TFrameInfo.Destroy;
begin
FFrame.Free;
inherited;
end;
そして、これをTObjectList<TFrameInfo>
with にOwnsObjects
設定して保持しTrue
ます。