【发布时间】:2011-08-08 09:55:46
【问题描述】:
我有我的自定义集合属性,当它是我的组件的直接成员时效果很好。
但我想将集合属性移动到组件中的 TPersistent 属性。现在问题来了,它不起作用:在对象检查器中双击集合属性通常会打开集合编辑器,但它不再起作用了。
首先 - 我应该将什么传递给 TPersistent 属性的构造函数?
TMyCollection = class(TCollection)
constructor Create(AOwner: TComponent); // TMyCollection constuctor
...
我不能通过 Self,所以我应该通过我的持久所有者吗?
constructor TMyPersistent.Create(AOwner: TComponent);
begin
inherited Create;
fOwner := AOwner;
fMyCollection := TMyCollection.Create(AOwner); // hmmm... doesn't make sense
end;
我想我错过了一些东西。如果需要更多代码,请评论这篇文章。
【问题讨论】:
-
TCollection 的构造函数不需要所有者,但需要 TCollectionItemClass。
-
嗯,但是当我从组件调用它时它运行良好。所以我假设我的 TCollection 和 TCollectionItem 是好的。
-
@NGLN 这是问题的答案。你为什么不这样写。如果你不写答案,那么 JustMe 不能接受!
-
“它不起作用”太模糊而没有意义。究竟会发生什么?它会崩溃吗?如果是,会出现什么错误消息,或者它是否无法编译,如果是,会出现什么错误消息?
-
@Rudy 单击 TCollection 进行编辑后没有任何反应。调试后它是一个 AV
标签: delphi delphi-2010 tpersistent