我的实现方式,你可以参考改进: if not frmPublic_Client.myFunFindMDIChild('myform') then Application.CreateForm(Tmyform,myform) else myform.Show; 函数frmPublic_Client.myFunFindMDIChild('myform')为判断该子窗体是否已经存在. function TfrmPublic_Client.myFunFindMDIChild(paFormName:AnsiString ):Boolean; begin var i:integer; myReturn:Boolean; begin myReturn:=false; for i :=1 to frmMain.MDIChildCount do begin if frmMain.MDIChildren[i-1].Name=paFormName then begin myReturn:=true; break; end; end; Result:=myReturn; end;
if Form2 = Nil then Form2:= TForm2.Create(Form2); Form2.WindowState := wsNormal; Form2.Show;
to foreveryday007(foreveryday007): 你好!请问为什么关闭后在打开就发生错误啊:提示abstract error.
if form2.showing then form2.hide else form2.show;
egin if main.MDIChildCount=0 then begin application.createform(tform1,form1); form1.Show; end else begin mmain.activemdichild.close; application.createform(tform1,form1); form1.show; end; end;
if not Assinged(form2) then begin form2:=Tform2.create(application); form2.show; end;在你的form2的onclose中写上 Action:=cafree; form2:=nil; 这样就可以了。
if not frmPublic_Client.myFunFindMDIChild('myform') then
Application.CreateForm(Tmyform,myform)
else
myform.Show;
函数frmPublic_Client.myFunFindMDIChild('myform')为判断该子窗体是否已经存在.
function TfrmPublic_Client.myFunFindMDIChild(paFormName:AnsiString ):Boolean;
begin
var
i:integer;
myReturn:Boolean;
begin
myReturn:=false;
for i :=1 to frmMain.MDIChildCount do
begin
if frmMain.MDIChildren[i-1].Name=paFormName then
begin
myReturn:=true;
break;
end;
end;
Result:=myReturn;
end;
Form2:= TForm2.Create(Form2);
Form2.WindowState := wsNormal;
Form2.Show;
你好!请问为什么关闭后在打开就发生错误啊:提示abstract error.
if main.MDIChildCount=0 then
begin
application.createform(tform1,form1);
form1.Show;
end
else
begin
mmain.activemdichild.close;
application.createform(tform1,form1);
form1.show;
end;
end;
begin
form2:=Tform2.create(application);
form2.show;
end;在你的form2的onclose中写上
Action:=cafree;
form2:=nil;
这样就可以了。