我新建一个工程,把form1的formstyle设置为fsmdiform然后新建一个form2设置form2的formstyle为fsmmdichild。
   我的问题是在form1中正常调用form2代码如下:
procedure TForm1.N1Click(Sender: TObject);
begin
  form2:=Tform2.Create(application);
  form2.Show;
end;
   当我单击form2上的关闭按钮时没有任何反应。

解决方案 »

  1.   

    Tfrom2.formClose事件中
    self.free;  试试
      

  2.   

    在form2的Close事件里写:  Action := Cafree;
      

  3.   

    procedure Tform2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action:=caFree;
    end;procedure Tform2.FormDestroy(Sender: TObject);
    begin
      form2:=nil;
    end;
      

  4.   

    在子窗体的OnClose事件中写如下代码:
      Action := caFree;
      

  5.   

    IwantFlay(我很爱她!!!!!!!!!!) 
       用你所说的方法不行啊,要出错的。stack overflow
      

  6.   

    各位大侠,请问
       action:=cafree;
    是什么意思,能不能说明一下啊
      

  7.   

    为什么我动态建立窗体时只能使用form2.show;而不能使用form2.showmodal
      

  8.   

    楼主你是不是不看书就打算在这问呀。所有的DELPHI 入门级书上都会说两句MDI窗体,这两句中就有一句是说如何关闭子窗体的。
      

  9.   

    加上这句就可以了,我试过了:procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      form2.Free;
    end;
      

  10.   

    使用form2.showmodal执行了之后,就去响应form2,不响应form1了,相当于此时form2成主窗体了....
      

  11.   

    在子窗体的onclose事件中加入
    action:=cafree;

    from2.free;
    均能实现。谢谢各位的帮忙现在就结帐给分。
      

  12.   

    Tfrom2.formClose事件中begin
      Action := caFree; //释放
      form2 := nil;
    end;
      

  13.   

    To supercase (可乐) :
    这里给你执行代码:在form1(主窗体)中button的事件里写入以下代码:  Application.CreateForm(TForm2, Form2);
      ModalResult := mrOK;
      Form2.ShowModal ;在form2(子窗体)的button的事件里写入关闭窗口:close;