消息处理或多线程问题?(50分)

  • 主题发起人 主题发起人 a-qun
  • 开始时间 开始时间
A

a-qun

Unregistered / Unconfirmed
GUEST, unregistred user!
需要在一个动态建立的窗体ShowModal的同时执行另一个操作,当操作完成时关闭建立<br>的窗体,就如同在显示动画窗体的同时操作数据库。<br>问题在于ShowModal后,不关闭窗体其他操作将不能进行,但又不能用Show。<br>请问应该用消息处理还是多线程?
 
如果在操作數據時, 要保持畫面的隨時更新, 最好是將數據操作放在線程中;<br>至於用ShowModal或Show, 看你程式的確切的需求、寫法, 並沒絕對可以或不可以<br>像以以下的方式就可以使用Show<br><br>procedure RunSQLS(cn: Connection; SQLs: array of string);<br>&nbsp;var<br>&nbsp; I: integer;<br>begin<br>&nbsp; with TForm1.Create(nil) do<br>&nbsp; &nbsp; try <br>&nbsp; &nbsp; &nbsp; Show; &nbsp;//顯示提示窗體<br>&nbsp; &nbsp; &nbsp; for I := 0 to High(SQLs)<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; Application.ProcessMessages; //處理windows消息, 以Refresh畫面<br>&nbsp; &nbsp; &nbsp; &nbsp; cn.Execute(SQLs);<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; finally<br>&nbsp; &nbsp; &nbsp; Free;<br>&nbsp; &nbsp; end; <br>end;<br>
 
呵,那你就用SHOW好了,只把FORM.formstyle:=fsstayontop
 
用多线程
 
两种方法都可以
 
我没想到用消息怎么实现?我觉得只能用线程来实现,有些动画控件本身就是用了线程
 
当你showmodal时给那边sendMessage,那边的wndpro中把getMessage事件写上就可以了,当结束时在发个Message
 
SendMessage和ShowModal都是要等到处理结束才会进行下一步的,根本不可能实现要求,<br>用PostMessage还有点可能,但是你只能发一次消息,难道在wndpro中接到消息后不断地<br>做循环?不好吧?还是用线程正规些。
 
wndpro是专门用来处理Message的,一直在接受Message,为什么要用循环呢<br>可以发两个消息吗,开始和结束
 
后退
顶部