如何让mdi子窗体form2最大化时,mdi子窗口form2在主窗体form1的客户区域内,而不合并菜单和工具栏  ; 当Form1大小改变时,Form2自动缩放到适合form1客户区的最大化大小,如果form2此时存在并且没有被caFree的话。以下是动态创建Mdi 子窗口 Form2的代码。Procedure Tform1.OpenForm(FormClass: TFormClass; Var fm;
  AOwner: TComponent);
Var
  i: integer;
  Child: TForm;
Begin
  For i := 0 To Screen.FormCount - 1 Do
    If Screen.Forms[i].ClassType = FormClass Then
    Begin
      Child := Screen.Forms[i];
      If Child.WindowState = wsMinimized Then
        ShowWindow(Child.Handle, SW_SHOWNORMAL)
      Else
        ShowWindow(Child.Handle, SW_SHOWNA);
      If (Not Child.Visible) Then Child.Visible := true;
      Child.BringToFront;
      Child.Setfocus;
      TForm(fm) := Child;
      exit;
    End;
  Child := TForm(FormClass.NewInstance);
  TForm(fm) := Child;
  Child.Create(AOwner);
  //Child.Free;
End;
 
OpenForm(Tform2, form2, self);

解决方案 »

  1.   

    那就别用mdi方式,直接创建一个form,然后贴在主窗体上
      

  2.   

    你可以这么干:
      1,你不用MDI的方式;
      2,当FORM2最大化时,在form2的Onpaint检测当前窗体是否处于最大化状态,如果处于最大化状态,可以 
         将form2的状态更改一半状态,同时FROM2窗体的left和top为你form1客户区域的left和top,form2
        窗体的大小,为你form1客户区域的大小;
      3,以上仅提供思路,具体没有试验过。请楼主自己试验并体会;