没有用MDI类型,是用setparent来设置子窗体的,在主窗体上放置一个panel2做为子窗体的父容器。Main为主窗体。子窗体中最好在关闭和ondestory中写上代码,在Onclose中写action:=cafree ,在ondestory中写上childfrm=nil;
如下代码:
procedure CreateChildFrm(AForm:TCustomForm;const AFormClass:TFormClass); function isExist():boolean; var i:integer; begin result:=False; for i :=0 to Screen.FormCount-1 do begin if Screen.Forms[i].ClassType=AFormClass then begin Result:=True; AForm:=TForm(Screen.Forms[i]); Break; end; end; end; begin if not isExist() then begin AForm:=AFormClass.Create(Main); Winapi.Windows.SetParent(AForm.Handle,Main.Panel2.Handle); end else begin ShowWindow(AForm.Handle,SW_MAXIMIZE); AForm.BringToFront; end; AForm.Show; end;
来源:https://www.cnblogs.com/yagzh2000/archive/2013/03/19/2968873.html