我正在使用一个TObjectList<TCustomFrame>
来存储TCustomFrames
. 现在我想TCustomFrame
在同一个列表中存储更多关于 的信息。Arecord
会很好。
您希望将哪个 delphi 类存储在同一个列表中TCustomFrames
?records
TCustomFrames
和将records
在运行时添加。
创建一条记录来保存所有信息:
type
TFrameInfo = record
Frame: TCustomFrame;
Foo: string;
Bar: Integer;
end;
把它放在一个TList<TFrameInfo>
.
我注意到您使用的是TObjectList<T>
而不是TList<T>
. 这样做的唯一充分理由是如果您设置OwnsObjects
为True
. 但这似乎不太可能,因为我怀疑该列表是否真正负责您的 GUI 对象的生命周期。作为将来的说明,如果您发现自己使用TObjectList<T>
with OwnsObjects
set toFalse
那么您不妨切换到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>
set OwnsObjects
to 中True
。