没有用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