主窗体调用子窗体有如下疑问
1:主窗体设置为fsMDIForm,子窗体设置为:fsMDIChild
2:主窗体如何调用子窗体,是用show还是showmodal,
3:我用show,多次调用会调用多个相同的子窗体,也就是重复
如何解决?

解决方案 »

  1.   

    procedure TMainForm.Openmdiwin(Sender: TFormClass);
    Var
      iii:Integer;
      Frm:TForm;
    begin
        For iii:=0 to MainForm.MDIChildCount-1 Do Begin
            if MainForm.MDIChildren[iii].ClassType=Sender Then Begin
               Frm:=MainForm.MDIChildren[iii];
               if Frm.WindowState=wsMinimized then //為最小化
                  ShowWindow(Frm.handle,SW_SHOWNORMAL)
               Else
                  ShowWindow(Frm.handle,SW_SHOWNA);
               if (Not Frm.Visible) then Frm.Visible:=True;
               Frm.BringToFront;
               Frm.SetFocus;
               Exit;
            End;
        End;
        Frm:=TForm(Sender.NewInstance);
        Frm:=Frm.Create(Self);
        Frm.Show;
    end;
      

  2.   

    你可以加个变量来控制,比如FChildCreated
      

  3.   

    function TMainForm.checkOpenmdiwin(Sender: TFormClass):boolean;//用于打开Mdi窗口前是否有此窗口,false则载系统忙信息窗口
    Var
      iii:Integer;
    begin
    result:=false;
        For iii:=0 to MainForm.MDIChildCount-1 Do Begin
            if MainForm.MDIChildren[iii].ClassType=Sender Then Begin
               result:=true;
               Exit;
            End;
        End;
    end;
      

  4.   

    回复人: JavaD(一竿残照) ( ) 信誉:100 
    看到你好活跃啊。
    每次都能看到你