我正在创建一个非可视组件。短代码:
// Element of some list item
TMyItem = class
private
Id: integer;
Caption: string;
public
constructor Create(const aId: integer; const aCaption: string);
end;
// List of items
TMyItemList = class(TObjectList<TMyItem>)
public
constructor Create;
end;
// The component
TMyComp = class(TComponent)
private
FMyList: TMyItemList;
public
constructor Create;
implementation
constructor TMyComp.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FMyList:= TMyItemList.Create;
end;
问题:为什么&#34; FMyList&#34;当&#34; MyComp&#34;产生的?已分配(FMyList)= false ...
答案 0 :(得分:0)
这不是您的实际代码。您的实际代码编译。但我们可以猜出问题是什么。这里:
type
TMyComp = class(TComponent)
private
FMyList: TMyItemList;
public
constructor Create;
end;
TComponent
的构造函数声明如下:
constructor Create(AOwner: TComponent); virtual;
它是一个虚拟构造函数,因为Delphi流式框架依赖于元类来创建对象。如果您希望框架调用构造函数,则必须覆盖此虚构造函数。
constructor Create(AOwner: TComponent); override;
我对这种猜测有信心,但我们不应该猜测。下次,请提交真实代码,Minimal, Complete, and Verifiable Example。