求助??????????????????????????(100分)

  • 主题发起人 主题发起人 dongliang110
  • 开始时间 开始时间
D

dongliang110

Unregistered / Unconfirmed
GUEST, unregistred user!
众位朋友。我有一个问题想解决:
我做了一个查询,但是当我点击查询时,统计时间很长,在下在统计时我想有一个进度条显示
查询的进度。但是我做一个,当统计时进度条就不动了。应样解决。
 
用线程来解决;
你在线程中进行查询,对进度条的控制可以在线程中postMessage以更新进度条的进度。
 
能否给个例子看看.
 
可以如下处理:
在线程里:
procedure TThrdProcess.Excute()
var
i : integer;
begin
for i=0 to 要处理的最大记录数do
begin
// 处理一条记录
//...
PostMessage(m_hWnd, m_dwMsg, THREAD_PROCESS, i);
if ( Terminated) then
break;
end
end;
其中 m_hWnd是处理dwMsg的窗口的句柄,
dwMsg是自定义的消息,为WM_USER + 自然数
THREAD_PROCESS 为WPRRAM,说明传送过来的消息是描述处理进度的
i 当前处理到第i条记录
不知是否明了?
 
看看delphi自带的例子,那儿有这样的一个类似的例子
 
线程里面对窗体控件的的操作并非线程兼容的,通常要用TThreadMethod.Synchronize
来调用从而保证不发生冲突。
另外,进度条更新以后需要刷新显示,调用application.processmessages即可。
 
后退
顶部