我在运行时动态创建了20个控件数组,然后free掉几个,那么在窗口关闭的时候,如果我要free掉剩下的这些的控件数组,那该怎么写?type
frmMain:TfrmMain;
idx:integer;
btns:array[1..255] of Tbutton; ...procedure TfrmMain.btnNewclick(sender:TObject);
begin
inc(idx);
btns[idx]:=Tbutton.create(self);
btns[idx].parent:=frmMain;
...
btns[idx].show;
end; ...procedure TfrmMain.btnDel(sender:TObject);
begin
btn[idx].free;//这里的idx并不一定是最后建立的那个。
end; ...procedure TfrmMain.Close....//窗体关闭时
var i:intger;
begin
for i:=1 to idx do
if .... //这里这么写??? not Assigned(btns[i])????这个出错.
btns[i].free;
end;
frmMain:TfrmMain;
idx:integer;
btns:array[1..255] of Tbutton; ...procedure TfrmMain.btnNewclick(sender:TObject);
begin
inc(idx);
btns[idx]:=Tbutton.create(self);
btns[idx].parent:=frmMain;
...
btns[idx].show;
end; ...procedure TfrmMain.btnDel(sender:TObject);
begin
btn[idx].free;//这里的idx并不一定是最后建立的那个。
end; ...procedure TfrmMain.Close....//窗体关闭时
var i:intger;
begin
for i:=1 to idx do
if .... //这里这么写??? not Assigned(btns[i])????这个出错.
btns[i].free;
end;
for i:=1 to idx do
btns[i].free;
行不?
好控制一些。
begin
if btn[idx]<>nil then
begin
btn[idx].free;//这里的idx并不一定是最后建立的那个。
btn[idx]:=nil;
end;
end;释放:
for i:=1 to idx do
if btn[idx]<>nil then
begin
btn[idx].free;//这里的idx并不一定是最后建立的那个。
btn[idx]:=nil;
end;
for i:=1 to 255 do
for i:=1 to 255 do
if btns[i]<>nil then
btns[i].free;