先来先得,释放窗体所有组件.

cnhxjtoa 2007-06-15 02:46:18
由于关闭窗口时我使用FORM.FREE
FORM:=NIL;
关闭窗口时会出错,如果CLOSE事件中没有代码就不会出错了.
但这样占内存.
于是我想释放窗体内的所有组件.
求代码
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harryfin 2007-06-15
  • 打赏
  • 举报
回复
er.. 貌似有个地方说得不够完善,owner指定form上的其它控件,控件也可以自动释放,总而言之是owner释放的时候,它会通知它下属的全部控件释放。
Harryfin 2007-06-15
  • 打赏
  • 举报
回复
释放窗体内的所有组件?

如果你是静态放在form上的,那么FORM释放时全部自动释放。

如果时动态创建的,只要创建时指定owner是form,那么form释放时也会跟着form释放。

如果是create(nil),你就得自己想办法了....

还有,我怀疑楼主的form.free是写在窗体事件里的,这样肯定出错。解决方法如zhu_jiang() 说的用caFree.
zhu_jiang 2007-06-15
  • 打赏
  • 举报
回复
如果非要这样做可以使用在onclose事件中加入
action := cafree;//form is closed and all allocated memory for the form is freed
xxForm := nil;


constantine 2007-06-15
  • 打赏
  • 举报
回复
一般就是谁创建谁释放,代码别人已经帖了
cnhxjtoa 2007-06-15
  • 打赏
  • 举报
回复
ding
阿发伯 2007-06-15
  • 打赏
  • 举报
回复
var
Form1: TForm1;
begin
Form1 := TForm1.Create(Application);
try
Form1.ShowModal;
finally
Form1.Free;
end;
end;

阿发伯 2007-06-15
  • 打赏
  • 举报
回复
如果使用动态建立窗口,Free就不会出错了

var
Form1: TForm1;
begin
Form1 := TForm1.Create(Application);
try
Form1.Show;
finally
Form1.Free;
end;
end;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧