try
if not Assigned(Form2) then
begin
Form2:=TForm2.create(self);
Form2.show;
end else
Form2.show;
finally
form2.free;
form2:=nil;
end;
if not Assigned(Form2) then
begin
Form2:=TForm2.create(self);
Form2.show;
end else
Form2.show;
finally
form2.free;
form2:=nil;
end;
Application.CreateForm(tForm2, Form2);
Form2.ShowModal;
Form2:=TForm2.Create(Application);
Form2.Show;
begin
Form2:=TForm2.create(self);
Form2.show;
end else
Form2.show;
//form2的onclose 事件
action:=cafree;
Email:[email protected]
FormExist:Boolean; //判断窗体是否存在FormExist:=false;
for i:=0 to MainForm.MdiChildCount-1 do
if MainForm.MdiChild[i].Name='Form2'(注意:大小写敏感) then
begin
FormIndex:=i;
FormExist:=true;
end;
if not(FormExist) TForm2.Create(self)
else MainForm.MdiChild[FormIndex].show;说明:如果用TForm2.Create(self)创建子窗体,不能用Form2来引用它。
如果TForm2有对应的单元文件Unit2({$ *.dfm}),而不只是定义的一个类,提倡用Application.CreateForm(TForm2,Form2)来创建,可以用Form2来直接引用。上述程序则可以改为:
var i:integer;
FormExist:Boolean;FormExist:=false;
for i:=0 to MainForm.MdiChildCount-1 do
if MainForm.MdiChild[i].Name='Form2'(注意:大小写敏感) then
FormExist:=true;if not(FormExist) Application.CreateForm(TForm2,Form2)
else Form2.show;另:MDI子窗体的默认关闭操作是最小化。在OnClose操作中加入Action:=caFree才能使它的关闭操作为真正的关闭(释放内存)