if not Assigned(frmHZMSG)  then
        begin
           frmHZMSG := TfrmHZMSG.Create(nil);
           frmHZMSG.ShowModal;
           FreeAndNil(frmHZMSG);
        end
        else frmHZMSG.BringToFront;
这在有这么一个问题,我用Constructor和destructor创建和释放一个类,并在这个类中有Execute过程,在Execute过程中执行上面所述代码,可是frmHZMSG窗体弹出之后怎么都关不掉,frmHZMSG的close和Destroy事件中都写了释放内存的语句,还是没用,请问各位大侠有没什么好的办法,在线等,急!客户叫死了

解决方案 »

  1.   

    frmHZMSG 的onClose里,写了Action := cafree;
               onDestroy里,写了frmHZMSG := Nil;:(,没人知道吗? 如果描述得不清楚可以问我
      

  2.   

    frmHZMSG是一个窗体类
    当你用frmHZMSG.ShowModal;
    窗体是显示了
    但它的焦点仍然在主程序里,也就说它的焦点并没有转移到frmHZMSG窗体上
    因此你关闭它的时候,,frmHZMSG的close和Destroy事件是没有被执行的
    但如果改为frmHZMSG.Show
    效果就不一样了 这个时候程序执行的焦点就转移到了frmHZMSG上了
    你可以试一下
      

  3.   

    To  FangSP不行,那样窗口都跳不出来了,还有什么法子么?
      

  4.   

    线程类吗?
    如果不是线程类,ShowModal 换成show
      

  5.   


            if not Assigned(frmHZMSG)  then
            begin
               frmHZMSG := TfrmHZMSG.Create(nil);
               frmHZMSG.Show;
               //FreeAndNil(frmHZMSG);
            end
            else frmHZMSG.BringToFront;