问题描述:
    我运行程序,进到主程序截面,在主程序界面上有一个控件,我点击此控件,此时就时就开始发消息,因为要等待消息的反馈信息,所以必须调用一个模态窗口出来(模态窗体上除了预先设置的提示信息,没有其他可以通过鼠标点击来关闭的按钮等控件),使得拥护不能对主程序中其他控件进行操作。当消息反馈回来时,模态窗体就自动关闭。请问该怎么做,才能实现模态窗体自己关闭掉?!
在线等待各位朋友给予解答!

解决方案 »

  1.   

    思路是:
    try
      ...
      模态窗体.ShowModal;
      你的事件处理
    finally
      模态窗体.Free;
    end;
      

  2.   

    模态窗体.ShowModal
    模态和非模态
    当用  Show    显示一个窗体时,不必关闭此窗体,就可以激活其他窗体;
    当用ShowModal 显示一个窗体时,必须关闭此窗体,才可以激活其他窗体。
    show窗体的时候会继续执行下面的语句,而showmodal的窗体要等有返回值的时候才会继续执行下面的语句,登陆的时候最好用showmodal语句
      

  3.   

    VeryOldMan(老者) 的代码明显不对,当一个模态窗口被ShowModal后,代码就停在那里了,除非这个模态窗口被关闭,ShowModal以后的代码是得不到机会执行的
    try
      ...
      模态窗体.ShowModal;   //程序流程停在这里,进入模态窗体的消息循环
      你的事件处理          //这句要等到模态窗口被关闭后才有机会执行到
    finally
      模态窗体.Free;
    end;
    ----------------------------
    模态窗体被ShowModal后,它使主线程停留在模态窗体内的一个消息处理里不断循环,直到本窗体的ModalResult被置一个mrOK或mrCancel.....的值。也就是说,要同时做另外一件事情,必须另起一个线程,让新线程来做事,做完了发一个消息给主线程,这个消息被将模态窗体得到,从而关闭自己。
      

  4.   

    TO:SeaWave(NoSound) 
    你说的就是我想要知道的,具体怎么做,我已经用另一个线程调出了Modal窗体,我都用PostMessage()试了,还是存在一个问题。
    我的问题是:
    我调用的一个函数A;//A是处理前面我的消息给服务器
    用另一线程调出个Modal窗体Form1;
    同步等待循环,等待函数A发给服务器返回的消息;//
    当服务器的消息返回回来,发一个消息给Modal窗体,同时Modal窗体就自己关闭。
    在执行主程序。
    以上已经很详细,希望能给出好的POSTMESSAGE()方法。
    对了消息同步能给个好的方法也可以,谢谢了!