我搜了好多帖子, 最方便的就是:if Not assigned(frmChild) then
  frmChild:=TfrmChild.create(Self);
try
  frmChild.Show;
finally
  frmChild.free;
  frmChild:=Nil;
end;现在的问题是:窗体一闪而过,为什么在show的时候,不等我去关闭,就直接执行finally后的语句呢?

解决方案 »

  1.   

    这种方式要用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;
      

  2.   

    看看Show和showModal的区别,看下帮助就明白了