我定义一个按钮数组,能生成,但在关闭窗体的时候出错,谁能解释啊!
type
TMySpeedButton=array of TSpeedButton;
private
{ Private declarations }
SpdBtn:TMySpeedButton;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
sname:string;
i:Integer;
begin
i:=0;
setlength(spdBtn,7);
for i:=0 to 7 do
begin
try
sName:='SpdBtn'+IntToStr(i+1);
SpdBtn[i]:=TSpeedButton.Create(nil);
SpdBtn[i].Name:=sName;
SpdBtn[i].Parent:=Form1;
SpdBtn[i].Left:=(i+1)*50;
SpdBtn[i].Top:=100;
SpdBtn[i].Caption:=IntToStr(i+1);
SpdBtn[i].Flat:=true;
except
showmessage('创建失败');
end;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i:Integer;
begin
for i:=0 to 7 do
SpdBtn[0].Free;
end;
type
TMySpeedButton=array of TSpeedButton;
private
{ Private declarations }
SpdBtn:TMySpeedButton;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
sname:string;
i:Integer;
begin
i:=0;
setlength(spdBtn,7);
for i:=0 to 7 do
begin
try
sName:='SpdBtn'+IntToStr(i+1);
SpdBtn[i]:=TSpeedButton.Create(nil);
SpdBtn[i].Name:=sName;
SpdBtn[i].Parent:=Form1;
SpdBtn[i].Left:=(i+1)*50;
SpdBtn[i].Top:=100;
SpdBtn[i].Caption:=IntToStr(i+1);
SpdBtn[i].Flat:=true;
except
showmessage('创建失败');
end;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i:Integer;
begin
for i:=0 to 7 do
SpdBtn[0].Free;
end;
var
i:Integer;
begin
for i:=0 to 7 do
SpdBtn[0].Free;
end;
改为
procedure TForm1.FormDestroy(Sender: TObject);
var
i:Integer;
begin
for i:=0 to 7 do
FreeAndNil(SpdBtn[i]);
end;
改为
setlength(spdBtn,8);