动态创建控件的问题,来者有分!
我建立了一个类
然后声明这个类
调用创建
出了问题
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就会内存访问错误