在form1中通过 Tform2.create(self).show 建了张form2
现在如何在form2中将它关掉,close不行的

解决方案 »

  1.   

    在 OnClose里写上
    Action := caFree 就可以Free它了!!!
      

  2.   

    建议采用另外的调用方法:with TForm2.Create(Self) do
    begin
    Show;
    Close;
    end;然后,在form2的OnClose事件中写代码:
    action:=caFree;
      

  3.   

    同意 pilicat(delphi迷) !!!
      

  4.   

    如果是你的Form2是MDI子窗口就按照上面的说法,
    如果不是那么你在Form2中是不是这样写form2.close?
    这样不行必须这样close就可以了;
      

  5.   

    form2的OnCloseaction := caFree;
    form2 := nil;
      

  6.   

    应在你的form2的onclose事件中加入
    action:=caFree;
    form2:=nil;
      

  7.   

    TO:pilicat(delphi迷)建议采用另外的调用方法:with TForm2.Create(Self) do
    begin
    Show;  //不会等待,继续执行,
    Close; //马上Close ,并Free 了,哈哈哈哈
    end;然后,在form2的OnClose事件中写代码:
    action:=caFree;用ShowModal 用这种方法还差不多。
      

  8.   

    在 OnClose里
     
       Action := caFree;
      

  9.   

    如果是 MDI 子窗口,则单击 Close 按钮的时候默认动作并不是关闭它
    要在其 OnDestroy 事件是添加如下代码
    Action := caFree;
    最好再加上一句
    Form2 := nil;
    这样做是因为避免在程序他处对 Form2 进行有效性判断的时候不正确。如果不是 MDI 子窗口的话那就再简单了
    只要调用那个窗口类对象的 Close 过程。
    当然了,你是要保存对这个窗口对象的引用的
    with TForm2.Create(Self) do
    begin
      Show
      //...
    end;
    应该这样
    DynaFrm := TForm2.Create(Self)
    DynaFrm.Show;
    在其他地方就可以这样关闭动态生成的窗口。