读书人

急求防止MDI子窗体重复打开的最佳方法

发布时间: 2012-02-11 09:51:34 作者: rapoo

急求防止MDI子窗体重复打开的最佳方法! 关于try ...finally...end 的用法
我搜了好多帖子, 最方便的就是:

if Not assigned(frmChild) then
frmChild:=TfrmChild.create(Self);
try
frmChild.Show;
finally
frmChild.free;
frmChild:=Nil;
end;

现在的问题是:窗体一闪而过,为什么在show的时候,不等我去关闭,就直接执行finally后的语句呢?


[解决办法]
这种方式要用ShowModal,不过这一般不用在MDI里。
try
frmChild.ShowModal;
finally
frmChild.free;
frmChild:=Nil;
end;

你可以用下在的方式
if Not assigned(frmChild) then
frmChild:=TfrmChild.create(Self);
frmChild.Show;

在以下两个事件中写上如下代码
procedure TfrmChild.FormDestroy(Sender: TObject);
begin
frmChild:=nil;
end;

procedure TfrmChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=CaFree;
end;

读书人网 >.NET

热点推荐