把子窗口从Project->Options...->Auto-create forms中去掉
然后在主窗口中调用:
    MDIForm1 := TMDIForm1.Create(Self);
    MDIForm1.Show;注意在MDIForm1.OnClose事件中加上:Action := caFree;

解决方案 »

  1.   

    在program中把子窗口的Application.CreateForm(xxx, xxx)都删掉,然后在主窗口中添加菜单或者按钮,在它们的事件中调用以下代码:
      Application.CreateForm(xxx, xxx);
      xxx.show;
      

  2.   

    把子窗口从Project->Options...->Auto-create forms中去掉
    然后在主窗口中调用:
    application.createform(tform1,form1);
    form1.show;
      

  3.   

    把子窗口从Project->Options...->Auto-create forms中去掉
    然后在主窗口中调用:Application.CreateForm(tform1, form1);
    form1.show;
      

  4.   

    ??????????????????????
    谢谢两位
    1. 如果子窗口已经打开,我希望只是把它激活,而不是再创建一个,请问怎么实现?
    2. careerist() 说的代码在哪?我没找着。
    ??????????????????????
      

  5.   

    先按Snakeguo(楠) (莫等闲&up2myself)说的做,然后
    这样实现,子窗口已经打开,只是把它激活,而不是再创建一个
    if not Assigned(form1) then
    begin
      Application.CreateForm(Tform1,form1);
      form1.Show;
    end
    else
      form1.Show;
      

  6.   

    var
     h:hwnd;
    begin
     h:=FindWindow('Tform2',nil);
     if h<>0 then
      begin
        //showwindow(form1.MDIChildren[0].Handle,SW_SHOWNORMAL );
        showwindow(h,SW_SHOWNORMAL);
      end;
      

  7.   

    ???????????????????
    存在时用form1.Show并没激活子窗口form1
    怎么才能激活form1?
    ???????????????????