form1.FreeOnRelease;
form1.Free;
form1.FreeInstance;
form1.Destroy;
form1.DestroyWindowHandle ;
form1.Activate;
form1.Action:=cafree; //此种写法是错误的,[Error] Unit1.pas(32): Incompatible types: 'TBasicAction' and 'TCloseAction'
但是在一个窗体的 onclose中写:
action:=cafree;又是正确的。

解决方案 »

  1.   

    form1.Action:=cafree好象必须是在formclose中执行的至于以上的几种写法,大概就是释放和销毁程度的区别了
      

  2.   

    To 楼主  你的概念理解错误了,首先需要明白的是Action只是一个参数,是一个事件的形参,这个事件就是OnClose事件:当我们在OnClose事件中指定Action参数的值的时候,将根据这个值来对OnClose事件所属的对象进行相关操作,例如最小化,隐藏或释放!  所以你直接将Action这个参数当做Form1的属性来对待,当然不正确了....明白?
      

  3.   

    那能不能说说这三个的区别啊?
    form1.FreeOnRelease;
    form1.Free;
    form1.Destroy;
      

  4.   

    记不清了。
    第一个是使用在COM中的。一般情况下不要直接调用。
    第二个能够自动识别对象是否为nil。
    第三个是类的析构函数。一般情况下应该在内部重载,不要直接调用。
      

  5.   

    form1.Activate:当窗体激活时自动执行的事件,如窗体产生时,由最小化到最大化时,
    如果是多窗体,则由显示窗体a到显示窗体b时,窗体a执行OnDeactivate事件,而窗体b会
    执行OnActivate事件.
    当我们释放对象时,最好调用form1.Free;,因为它会判断对象是否为nil,不为nil时会调用
    form1.Destroy;,这样比较安全,不易出错。
      

  6.   

    form1.Action:=cafree;是在MDI窗体释放时使用的
      

  7.   

    cybercake(数字蛋糕) 说的完全正确