procedure TMainForm.Openmdiwin(Sender: TFormClass); Var iii:Integer; Frm:TForm; begin For iii:=0 to MainForm.MDIChildCount-1 Do Begin if MainForm.MDIChildren[iii].ClassType=Sender Then Begin Frm:=MainForm.MDIChildren[iii]; if Frm.WindowState=wsMinimized then //為最小化 ShowWindow(Frm.handle,SW_SHOWNORMAL) Else ShowWindow(Frm.handle,SW_SHOWNA); if (Not Frm.Visible) then Frm.Visible:=True; Frm.BringToFront; Frm.SetFocus; Exit; End; End; Frm:=TForm(Sender.NewInstance); Frm:=Frm.Create(Self); Frm.Show; end;
你可以加个变量来控制,比如FChildCreated
function TMainForm.checkOpenmdiwin(Sender: TFormClass):boolean;//用于打开Mdi窗口前是否有此窗口,false则载系统忙信息窗口 Var iii:Integer; begin result:=false; For iii:=0 to MainForm.MDIChildCount-1 Do Begin if MainForm.MDIChildren[iii].ClassType=Sender Then Begin result:=true; Exit; End; End; end;
Var
iii:Integer;
Frm:TForm;
begin
For iii:=0 to MainForm.MDIChildCount-1 Do Begin
if MainForm.MDIChildren[iii].ClassType=Sender Then Begin
Frm:=MainForm.MDIChildren[iii];
if Frm.WindowState=wsMinimized then //為最小化
ShowWindow(Frm.handle,SW_SHOWNORMAL)
Else
ShowWindow(Frm.handle,SW_SHOWNA);
if (Not Frm.Visible) then Frm.Visible:=True;
Frm.BringToFront;
Frm.SetFocus;
Exit;
End;
End;
Frm:=TForm(Sender.NewInstance);
Frm:=Frm.Create(Self);
Frm.Show;
end;
Var
iii:Integer;
begin
result:=false;
For iii:=0 to MainForm.MDIChildCount-1 Do Begin
if MainForm.MDIChildren[iii].ClassType=Sender Then Begin
result:=true;
Exit;
End;
End;
end;
看到你好活跃啊。
每次都能看到你