窗口名为InvDealResultFrm 类型为fsMDIChild
窗口名为infoFrm 类型为fsNormal程序要求:
在InvDealResultFrm 中打开窗口infoFrm后,想关闭窗口InvDealResultFrm 。我在InvDealResultFrm 窗口按钮中这么编写如下程序,但是实际效果为必须等infoFrm窗口关闭后InvDealResultFrm窗口才关闭。=========================================
infoFrm := TinfoFrm.Create(application);
infoFrm.ShowModal;
infoFrm.Free;
infoFrm:=nil;InvDealResultFrm.Close;
=========================================

解决方案 »

  1.   

    infoFrm := TinfoFrm.Create(application);
    InvDealResultFrm.hide; //先隐藏
    infoFrm.ShowModal;
    infoFrm.Free;
    infoFrm:=nil;InvDealResultFrm.Close;//消耗
      

  2.   

    窗体如果用ShowModal方式显示出来,则这行代码后面的代码是要等到窗体关闭后才执行的
    所以要达到你的效果,可以在infoFrm的onshow事件中关闭InvDealResultFrm
    也可以用楼上的办法
      

  3.   

    也可以隐藏 
    self.hide; //最好是 self.close
      

  4.   

    infoFrm := TinfoFrm.Create(application);
    infoFrm.ShowModal;
    infoFrm.Free;
    infoFrm:=nil;
    你说关闭InvDealResultFrm ,为何要把infoFrm给关了?infoFrm:=nil就是关闭的意思
    这样当然是infoFrm关了,InvDealResultFrm 才会关
    infoFrm:= TinfoFrm.Create(application);
    InvDealResultFrm.Close;
    infoFrm.ShowModal;
    infoFrm.Free;
    infoFrm:=nil;
      

  5.   

    在 infoFrm 的 onShow 事件中向 InvDealResultFrm 发送关闭消息或是 InvDealResultFrml.Free;