如何判断一个form 已经 ShowModal ,请告知小弟谢谢!

解决方案 »

  1.   

    你是要怎么样判断?
    是想判断一个窗口showmodal后返回的值,还是一个窗口显示了,你想知道他是以那种方式显示的?要是前者可以用
       
         if form1.showmodal =1 then    //是[确定]的处理,0是取消或关闭窗口
            begin
               ........                      
            end
       要是后者的话,如果一个窗口已经以showmodal方式打开了,其他窗口会失去焦点,你只能操作此窗口~~!
      

  2.   

    呵,可能是我没表达清楚,我是想在主窗体判断一个窗体是否ShowModal,如果这个窗体已经ShowModal我就想在主窗体吧他关掉,那我该如何在主窗体判断呢?请告知谢谢!
      

  3.   

    showmodal是该窗体在显示的时候占据焦点,在关掉之前有允许回到其它窗体,也不允许有别的窗体在它前面。既然该窗体已经占据了焦点,成为当前窗体,你又怎么能够回到“主窗体”把它关掉呢?如果能够回到主窗体,说明这个窗体不是以showmodal的形式显示的。不知道我说明白了没有
      

  4.   

    1. if (Tform)<>nil2. if (Application.MainForm<>nil) and
            (Windows.IsWindowEnabled(Application.MainForm.Handle))
      

  5.   

    showmodal是该窗体在显示的时候占据焦点,在关掉之前有允许回到其它窗体,也不允许有别的窗体在它前面。既然该窗体已经占据了焦点,成为当前窗体,你又怎么能够回到“主窗体”把它关掉呢?这个如果是另外一个线程的话,可以知道的。看了VCL的源码发现在ShowModal中调用了Include(FFormState, fsModal);你就可以在程序用if fsModal in Form.FormState then来判断是否窗体已经ShowModall楼主结贴给分吧。
      

  6.   

    说得对,但有个笔误:showmodal是该窗体在显示的时候占据焦点,在关掉之前不允许回到其它窗体,也不允许有别的窗体在它前面。楼住可以用show,而不要用showmodal。然后在主窗口用Showing来判断。