程序在执行一个大点的任务的时候,就象死机一样,尤其是最小再最大化后,连LABEL中的字都没显示了,整个程序就一个框架,非得程序结束后才可以有显示,请问这是怎么回

  • 主题发起人 主题发起人 chi8
  • 开始时间 开始时间
C

chi8

Unregistered / Unconfirmed
GUEST, unregistred user!
程序在执行一个大点的任务的时候,就象死机一样,尤其是最小再最大化后,连LABEL中的字都没显示了,整个程序就一个框架,非得程序结束后才可以有显示,请问这是怎么回事?能用什么办法解决? (50分)<br />程序在执行一个大点的任务的时候,就象死机一样,尤其是最小再最大化后,连LABEL中的字都没显示了,整个程序就一个框架,非得程序结束后才可以有显示,请问这是怎么回事?能用什么办法解决?分不够我给您加
 
把程序贴上来看一下
 
程序没什么啊,我就是为一个数据库查询结果排序,排序这个问题很慢,需要等待,在这个
过程中,程序就象死了一样。请问如何让他响应其他事件,并且我也想知道原因来改正它
 
肯定有问题。
 
需要强制刷新消息
 
程序循环中加入以下代码‘

Application.processmessage
 
请问Application.processmessage是什么事件,如何用,我新学不久,可能有点麻烦,请
多指教![:D]
 
可能是CPU占用太多了或死循环,改成多线程试试
 
...
Application.processmessage;
...
 
能不能给我举个例子?
 
能不能贴上程式代码,这样说好太不清楚了!!!
 
用多线程是个好办法。
 
try
if form1.edit1.text=''then
begin
with form1.query1 do
begin
close;
sql.clear;
sql.add('select * from kjcgda1 ');
sql.add(edit1.Text);
open;
end;
end
else
begin
with form1.query1 do
begin
close;
sql.clear;
sql.add('select * from kjcgda1 where ');
sql.add(form1.edit1.text+ ' ');
sql.add(edit1.text);//edit1中是排序条件
open;
end;
end;
finally
form2.hide;
end;

请问怎么写?
 
同意 1Fuyi
就是用Application.processmessage
只用把这一句添加在整个过程的任何部分就可以了。

至于这个事件的作用,我想就好象你在做过程中这些事的时候,不时的
看看有没有其它的事件发生(一般用来查看中止动作)
 
用application.processmessage好象不是很合适!
Delphi中对它的解释是“允许Windows处理当前消息队列中的所有消息,直到该队列为空,
然后把控制权交还给application”。
也就是说它是用来释放控制权的。
如果你的排序要中止,那么可以用这个方法来获得鼠标的动作,如果只是要刷新from,
我想可能用form.update来实现。
 
太懒,
认真研究出来的东西,才有价值.

查帮助,难道你不会用吗?
 
多人接受答案了。
 
后退
顶部