我设立了主窗口和子窗口
主窗口中这样设的frm:= TFrm.Create(frm_main);
DEfaultMonitor:=dmMainForm
FormStyle:=fsMDIForm
子窗口中这么设
DEfaultMonitor:dmActiveForm
FormStyle:=fsMDIChild
FormClose中:
frm.DestroyWindowHandle();
执行是不报错,但执行完以后系统报错:Cannot Create 
Form.No MDI Forms are Currently Active这是为什么??要怎么处理??

解决方案 »

  1.   

    FormClose中:
    Action:= caFree;
      

  2.   

    要先Create主窗口
    子窗口Create时要指时主窗口
    Childfrm := TChildfrm.Create(Mainfrm);
    Childfrm.show();
      

  3.   

    我忘了说了,不好意思!
    FormCreate:
    frm:=  TFrm.Create(frm_main);
      

  4.   

    在dpr文件中先创建frm窗体,比如
    Application.Initialize;
    Application.Title := 'XX';
    Application.CreateForm(Tfrm, frm); //这个要先写,把Application.MainForm设置为frm
    ...
    Application.CreateForm(Tfrm1, frm1);
    Application.CreateForm(Tfrm2, frm2);
    ...
      

  5.   

    先设置好父窗体和子窗体;
    然后:project->Options->Forms页->把子窗体移到右边;
    在按钮的事件里:
    var childFor:TFormChild;
    begin
       childFor:=TFormChild.Create(Appcation);
    end;
    试试吧!
      

  6.   

    这样写是可以了!
    但又有一个问题:
    我在子窗口的FormCreate函数中写了一句:
     Childfrm.WindowState:=wsMaximized;
    又开始系统报错,但是还是可以运行,为什么?