问题描述:
我运行程序,进到主程序截面,在主程序界面上有一个控件,我点击此控件,此时就时就开始发消息,因为要等待消息的反馈信息,所以必须调用一个模态窗口出来(模态窗体上除了预先设置的提示信息,没有其他可以通过鼠标点击来关闭的按钮等控件),使得拥护不能对主程序中其他控件进行操作。当消息反馈回来时,模态窗体就自动关闭。请问该怎么做,才能实现模态窗体自己关闭掉?!
在线等待各位朋友给予解答!
我运行程序,进到主程序截面,在主程序界面上有一个控件,我点击此控件,此时就时就开始发消息,因为要等待消息的反馈信息,所以必须调用一个模态窗口出来(模态窗体上除了预先设置的提示信息,没有其他可以通过鼠标点击来关闭的按钮等控件),使得拥护不能对主程序中其他控件进行操作。当消息反馈回来时,模态窗体就自动关闭。请问该怎么做,才能实现模态窗体自己关闭掉?!
在线等待各位朋友给予解答!
try
...
模态窗体.ShowModal;
你的事件处理
finally
模态窗体.Free;
end;
模态和非模态
当用 Show 显示一个窗体时,不必关闭此窗体,就可以激活其他窗体;
当用ShowModal 显示一个窗体时,必须关闭此窗体,才可以激活其他窗体。
show窗体的时候会继续执行下面的语句,而showmodal的窗体要等有返回值的时候才会继续执行下面的语句,登陆的时候最好用showmodal语句
try
...
模态窗体.ShowModal; //程序流程停在这里,进入模态窗体的消息循环
你的事件处理 //这句要等到模态窗口被关闭后才有机会执行到
finally
模态窗体.Free;
end;
----------------------------
模态窗体被ShowModal后,它使主线程停留在模态窗体内的一个消息处理里不断循环,直到本窗体的ModalResult被置一个mrOK或mrCancel.....的值。也就是说,要同时做另外一件事情,必须另起一个线程,让新线程来做事,做完了发一个消息给主线程,这个消息被将模态窗体得到,从而关闭自己。
你说的就是我想要知道的,具体怎么做,我已经用另一个线程调出了Modal窗体,我都用PostMessage()试了,还是存在一个问题。
我的问题是:
我调用的一个函数A;//A是处理前面我的消息给服务器
用另一线程调出个Modal窗体Form1;
同步等待循环,等待函数A发给服务器返回的消息;//
当服务器的消息返回回来,发一个消息给Modal窗体,同时Modal窗体就自己关闭。
在执行主程序。
以上已经很详细,希望能给出好的POSTMESSAGE()方法。
对了消息同步能给个好的方法也可以,谢谢了!