Form在Free之后,Form变量并不为nil,怎么判断这种情况? 比如有一个AlreadyFree()函数,就可以这样if AlreadyFree(Form) then Form := nilelsebegin Form.Free; Form:nil;end; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if Assigned(Form) then FreeAndNil(Form); if FindComponent('form名')=nil then begin //...... end else begin form.Free; end; 即使Form已经Free,因为Form不为nil,所以此时Assigned(Form)返回True; Form自己关闭时在Close事件中设置关闭参数为caFree,即可自己释放内存,但指向窗口的变量并不自动设为nil,故在Destroy事件中将其设为nil。上面所说的Form一般为非模式调用,故if not Assigned(Form) then Form := TForm.Create(self);即可,Form关闭由Form自己决定,传参数self后,若此窗口关闭则Form也关闭。具体问题在《开发人员指南5》中有非常详细的介绍。 happyggy(阿牛De牛)的方法可行 HeLiang7(阿亮) 的方法只有直接使用默认的窗体变量的情况下有用,如果动态创建时使用的是自定义的变量myForm:TForm1,myForm := TForm1.create();应该无效 循环出了个小错误。眼力好的哥们 麻烦进来看看哈 请教:DLL与EXE的APP SERVER有什么不一样? 请问delphi中做菜单栏中的二级菜单怎么做? 如何对stringgrid的某个cell进行修改后,其他的cell中的值会相应改变? 想将一个单机版数据库应用程序改成网络版,修改了数据库的连接位置后,成功了,但有一个问题困扰着我,大侠们帮出出主意吧! 编辑过后dbedit 不能写入? 关闭程序时内存出错! TMSComm控件安装问题 请帮忙看看下面程序后面的[1]是什么意思?? 三喜临门,散分3000庆祝(之六) 新手提问,请多支持! 三层结构RemoteDatamodule的问题!
FreeAndNil(Form);
begin
//......
end
else
begin
form.Free;
end;
上面所说的Form一般为非模式调用,故
if not Assigned(Form) then
Form := TForm.Create(self);
即可,Form关闭由Form自己决定,传参数self后,若此窗口关闭则Form也关闭。
具体问题在《开发人员指南5》中有非常详细的介绍。
HeLiang7(阿亮) 的方法只有直接使用默认的窗体变量的情况下有用,如果动态创建时使用的是自定义的变量myForm:TForm1,myForm := TForm1.create();应该无效