设mdi子窗体名为:mdi1:Tmdi1procedure Tmainform.openMDIClick(Sender: TObject); var li_loop:integer; lbl_falg:boolean; //窗口是否打开的标志 begin lbl_falg:=false; //判断要打开的子窗体中是否已经打开 for li_loop:=0 to self.MDIChildCount-1 do begin if self.MDIChildren[li_loop] is Tmdi1 then begin lbl_falg:=true; //判断出窗口已打开 end end; if lbl_falg then //如果子窗体已打开,则将它激活 begin mdi1.Show;//激活 if mdi1.WindowState=wsMinimized then ShowWindow(mdi1.Handle,SW_SHOWNORMAL);//如果是最小化就显示为正常 end else // 如果子窗体未打开,则创建它 begin mdi1:=Tmdi1.Create(Self); mdi1.Show; end; end;这就是我平时用的,绝对可以解决你的问题
var
li_loop:integer;
lbl_falg:boolean; //窗口是否打开的标志
begin
lbl_falg:=false;
//判断要打开的子窗体中是否已经打开
for li_loop:=0 to self.MDIChildCount-1 do
begin
if self.MDIChildren[li_loop] is Tmdi1 then
begin
lbl_falg:=true; //判断出窗口已打开
end
end; if lbl_falg then //如果子窗体已打开,则将它激活
begin
mdi1.Show;//激活
if mdi1.WindowState=wsMinimized then
ShowWindow(mdi1.Handle,SW_SHOWNORMAL);//如果是最小化就显示为正常
end
else // 如果子窗体未打开,则创建它
begin
mdi1:=Tmdi1.Create(Self);
mdi1.Show;
end;
end;这就是我平时用的,绝对可以解决你的问题