Delphi7下面关于动态创建控件和释放的个人总结

本文总结了在Delphi7下动态创建Panel控件时遇到的问题及解决方案。作者通过实例代码展示了在双击事件中直接释放Panel会导致错误,而采用Timer延迟释放或使用全局变量管理Panel数组的方式可以避免问题。最后得出结论,不建议在动态生成控件的共享事件中直接释放控件。
摘要由CSDN通过智能技术生成

昨天,一个网友在动态创建控件时释放出了错。他的情况是,动态创建了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的双击事件。代码也如下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值