我是用suiform控件,在formclose事件中用:
action:=cafree;
form1:=nil; 但是通过assinged(form1) 函数测试,发现这个窗体并没有释放?请问用什么方法来释放窗体?

解决方案 »

  1.   

    你是如何创建该窗体的?以及如果操作关闭窗口的?formclose只在收到WM_ClOSE消息的时候才被触发。一般说只在Close方法和点X关闭窗口,才被触发。如果是MDI子窗体,关闭主窗体的时候formClose并不执行。
      

  2.   

    在formdestroy加上form1:=nil;这个是模式窗体和无模式窗体的区别
      

  3.   

    创建窗体:
     if not assigned(form1) then
         form1:=tform1.Create(application);
      form1.Show;
    但是执行完action:=cafree; form1:=nil; 重新打开form1时,并没有执行:form1:=tform1.Create(application);还有一个问题:有的时候 form1.close 这句语句编译出现如下错误:
     undeclared identifier:'close'
    假如用self.close 则不会出现错误,请问为什么?
      

  4.   

    一般我们使用Close默认都是self.Close;当使用form1.Close的时候,那么form1必须是TForm的一个实例,当然也可以是其子类的一个实例,并且在该位置form1实例是可见的。在delphi编程中,一般都在implmentation上面自动添加了如下一行代码
    var
      Form1: TForm1;
    自动定义了一个form1实例,所以在下面的过程或者函数中就可以使用form1.close了,如果没有前面这个声明,form1.close就不能使用了。