在MDI的主窗口内:
procedure TfrmMain.showform(FormClass: TFormClass);
var
i: integer;
begin
for i := 0 to self.MDIChildCount - 1 do
if (MDIChildren[i] is FormClass) then //判断子窗体是否打开
begin
self.MDIChildren[i].BringToFront;
MDIChildren[i].SetFocus;
Exit;
end;
FormClass.Create(self);
end;关闭子窗口:
procedure Tfrmcbcx.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;//加上这句
end;此时用close;就可以关闭了。
procedure TfrmMain.showform(FormClass: TFormClass);
var
i: integer;
begin
for i := 0 to self.MDIChildCount - 1 do
if (MDIChildren[i] is FormClass) then //判断子窗体是否打开
begin
self.MDIChildren[i].BringToFront;
MDIChildren[i].SetFocus;
Exit;
end;
FormClass.Create(self);
end;关闭子窗口:
procedure Tfrmcbcx.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;//加上这句
end;此时用close;就可以关闭了。
flag:=0;
if i:=0 to mainform.MDIChildCount-1 do
if uppercase(mainform.MDIChildren[i].Name)='YOURFORM' then
flag:=1;// 子窗体已打开if flag=1 then yourform.close;
i:integer;
begin
for i:=1 to form1.MDIChildCount do
begin
if form1.MDIChildren[i-1].Visible =false then
form1.MDIChildren[i-1].Visible:=true;
form1.MDIChildren[i-1].WindowState :=wsNormal ;
end;end;
:
在子窗体的onclose事件中加:action:=cafree;但关闭后,就释放掉了,也就是说form1.MDIChildCount 会减少1