昨天,一个网友在动态创建控件时释放出了错。他的情况是,动态创建了N个Panel,然后双击Panel就释放掉该Panel。可问题就来了,一释放就出错。然后就一顿讨论。当然也有其他的高手给出了代码,可高手的代码用的是XE5写的。我和那位网友都是Delphi7。网上也有别的一些动态创建和释放控件的代码但是跟我这讲的不一样。现在就把我自己在这件事的一些所想写下来,为后面的一些人提示或者铺路。软件这玩意跟环境有很大的关系。我先说说本次所用的编程环境Delphi7+XP系统。
碰到的问题
我们写东西,当然是有代码来还原当时的情形:首先我们通过一个按钮来增加Panel。我们双击一次界面添加一个Panel。下面是代码:版本1
procedure TForm1.Button1Click(Sender: TObject);
begin
with TPanel.Create(Self) do
try
Parent := Self;
Left := 50+100*Num;//Num是全局变量,这样创建的Panel就不会叠在一起
Width := 50;
Top := 50+100*Num;
Height := 50;
Color := clRed;
Caption := IntToStr(Num);
Tag := Num;
Name := Format('Panel%d',[Num]);
OnDblClick := Panel1DblClick;//动态添加Panel的双击事件
finally
end;
Inc(Num);
end;
动态创建了Panel我们还应该给出Panel的双击事件。代码也如下