如何让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);
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的方式;
2,当FORM2最大化时,在form2的Onpaint检测当前窗体是否处于最大化状态,如果处于最大化状态,可以
将form2的状态更改一半状态,同时FROM2窗体的left和top为你form1客户区域的left和top,form2
窗体的大小,为你form1客户区域的大小;
3,以上仅提供思路,具体没有试验过。请楼主自己试验并体会;