在Delphi程序中....(100分)

  • 主题发起人 主题发起人 zhzdl
  • 开始时间 开始时间
Z

zhzdl

Unregistered / Unconfirmed
GUEST, unregistred user!
用Delphi设计的程序,如果程序正在进行复杂的运算时失去焦点(也就是切换任务),
就不能重新显示窗口了,只能看到一个白色的框框,请问如何才可以避免这个问题,谢
谢了!
 
对要进行运算的过程建立一个线程
 
调用form.update就好了,可以重画窗口,不会再出现白框。
 
如果你的程序一切正常的话,窗口还不能正常显示吗?
 
运算循环中加入:
application.processmessages
 
在你的处理过程中或循环中使用ProcessMessages;函数以处理其他消息。

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
; for i:=0 to 1000000 do
; begin
; ; edit1.text:=inttostr(i);
; ; application.ProcessMessages;
; end;
end;
 
我没用循环语句,我定义了5个过程,在一个事件中执行,因为是从网上获取资源,如果网
速慢可能会要延长程序的执行时间,我比较赞成第一位朋友的观点,建立一个新的线程,可
我对线程操作不太会:),转让CPU的控制权我也试过了,效果不是很好,调用Update就更
不是好方法哦:)
五个过程是:打开并检查数据库、从网上下载数据、分析下载的数据,对数据进行处理、
将处理后的数据写入数据库,其中有两个过程用了循环语句,都要加上ProcessMessages;
吗?
谢谢大家了!
 
好了,我用了application.ProcessMessages;,在每个循环都加上一个,效果就好多了,
谢谢大家了!
 
谢谢大家的支持!
 
多人接受答案了。
 
后退
顶部