请教Form的释放问题 请问,OnClose和OnDestroy有何区别?对自动创建的Form及手工创建的Form又有何区别?是否需要在OnClose中action:=cafree,而在OnDestroy中form1:=nil谢谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 close的时候并没有释放窗口的资源.对手工和自动创建的窗口都是这样,所有没有明确释放的窗口的资源都是随主窗口的释放而释放的,问题就是伴随窗口申请的一些资源,比如内存数组,就不会释放.这就是说,destroy是对应create事件的.而close是对应show或showmodal事件的. 谢谢~那么Destroy是随着主窗口Destroy时一起调用的吧? cafree对应CreateForm,free对应Create,当然有时候用destroy也可以,但是最好用free 一般而言,自动创建的窗口最好在其OnClose中写action:=cafree;动态创建的窗口:最好申明一个全局变量(不要用局变量)来引用窗口实例:var AForm:TMyForm;.....begin if Not Assigned(AForm) then begin AForm:=TMyForm.create(Application); AForm.Show end else AForm.Show;....... FreeAndNil(AForm);..... end; OnClose和OnDestroy只是顺序不同,OnClose在前而OnDestroy在后。OnClose最好加上Action := Cafree//下面TXX是某个窗体类Application.CreateForm和xx := TXX.create(application)在我看来没有什么本质的不同,属主都是APPLICATION。TXX.Create(AOwner: TComponent),AOwner是关键,如果是nil的话,一定要手动Free如果指定属主,那么可以手动,也可以不必手动,当AOwner被Free时,TXX的实例会被自动Free 请教delphi中combobox的问题 文本文件导入数据表 如何在前台编制程序读取串口的数据呀请给我思路或者代码? 程序中的全局变量怎样用FastReport打印出来? 我想做一个五字棋(人机对)的程序,请大哥大姐指点思路了 谁要INTRAWEB的技术手册!免费赠送 如果得到dbgrid的当前记录号(行号) 如何使编写的软件界面布局不随显示器分辨率而变化? QuickRep报表出错,怎么办? 怎么用代码实现与SOL SERVER 的ODBC 连接 (送分题) MessageBox()在数据模块中不能通过. 求一SQL语句,截取"<"前的字符
这就是说,destroy是对应create事件的.而close是对应show或showmodal事件的.
动态创建的窗口:最好申明一个全局变量(不要用局变量)来引用窗口实例:
var
AForm:TMyForm;
.....
begin
if Not Assigned(AForm) then
begin
AForm:=TMyForm.create(Application);
AForm.Show
end
else
AForm.Show;
.......
FreeAndNil(AForm);
.....
end;
OnClose最好加上Action := Cafree
//下面TXX是某个窗体类
Application.CreateForm和xx := TXX.create(application)在我看来没有什么本质的不同,属主都是APPLICATION。
TXX.Create(AOwner: TComponent),AOwner是关键,如果是nil的话,一定要手动Free
如果指定属主,那么可以手动,也可以不必手动,当AOwner被Free时,TXX的实例会被自动Free