首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

在控件的Create中可否调用published属性的值?解决办法

2012-02-25 
在控件的Create中可否调用published属性的值?例如我的控件声明如下:TMyPanelclass(TPanel)privateFMyArra

在控件的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;如果没有初始值,那么你的构造函数里要用到这个属性的话,在这段代码前就要先把这个值初始化.

热点排行