读书人

动态创建控件的有关问题来者有分

发布时间: 2012-03-07 09:13:51 作者: rapoo

动态创建控件的问题,来者有分!
我建立了一个类

然后声明这个类

调用创建

出了问题

TAutoCreatePanel = class(TObject)
private
PNN : Tpanel;
public
constructor Create(cParent: TComponent);
procedure FreePanel;
end;

constructor TAutoCreatePanel .Create(cParent: TComponent);
begin
PNN := Tpanel.Create(nil); //报内容地址错误
PNN.Width := 10;
PNN.Height:= 10;
end;

var
FAutoCreatePanel : array of TAutoCreatePanel ;

。。。。
SetLength(FAutoCreatePanel , 10); //回馈串口监控数组

FAutoCreatePanel[1].create(Nil);的时候出现错误




[解决办法]
constructor TAutoCreatePanel .Create(cParent: TComponent);
begin
inherited Create;
PNN := Tpanel.Create(nil); //报内容地址错误
PNN.Width := 10;
PNN.Height:= 10;
end;
[解决办法]
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(FAutoCreatePanel , 10); //回馈串口监控数组
FAutoCreatePanel[1].create(Nil);//的时候出现错误

end;

构造函数的调用方法应为:FAutoCreatePanel[1]:=TAutoCreatePanel.Create(nil);
因为调用Create方法时FAutoCreatePanel[1]实例未创建,FAutoCreatePanel[1].Create就会内存访问错误

读书人网 >.NET

热点推荐