读书人

在控件的Create中可否调用published属

发布时间: 2012-02-25 10:01:48 作者: rapoo

在控件的Create中可否调用published属性的值?
例如我的控件声明如下:

TMyPanel = class(TPanel)
private
FMyArray: array [1..800] of TMyArray;//多少还不固定,800是上限
published
property ArrayCount: Integer read FArrayCount write SetArrayCount
end;

我为了节省内存占用,可以在属性页上输入ArrayCount的值,比如15,但为什么跟踪下面函数时,ArrayCount的当前值却不是15呢?我应该怎么作?

constructor TMyPanel.Create(AOwner: TComponent);
var
i: Integer;
begin
for i:= 1 to ArrayCount do
begin
FMyArray[i]:= TMyArray.Create;
end;
end;

多谢各位帮忙了!


[解决办法]
你的FArrayCount 定义呢?
[解决办法]
public
constructor TMyPanel.Create(AOwner: TComponent;aArrayCount:Integer );


constructor TMyPanel.Create(AOwner: TComponent;aArrayCount:Integer);
var
i: Integer;
begin
ArrayCount:=aArrayCount;
for i:= 1 to aArrayCount do
begin
FMyArray[i]:= TMyArray.Create;
end;
end;
[解决办法]
其实很简单的问题,如果你要对一个属性设置初始值,那么你可以在属性定义里加上default 15;如果没有初始值,那么你的构造函数里要用到这个属性的话,在这段代码前就要先把这个值初始化.

读书人网 >.NET

热点推荐