Delphi 延迟函数

application.ProcessMessages的主要作用使程序在循环时能够相应外界事件。

一般情况下,程序在循环的时候不响应外界事件。直到循环结束为止才能接受和响应外界事件。

application.ProcessMessages可以有效的解决循环循环的独占问题,能够暂时中断应用程序的执行。

比如,你要设计一个计算,这个计算需要循环10000次。当循环开始到500次的时候,用户突然不想计算下去了,它想取消这个计算,这时候你就可以设置一个cancel按钮,然后在循环体内部合适的位置application.ProcessMessages。来处理cancel按钮的信息,中断循环。如果你在循环体内没有application.ProcessMessages这句。当循环开始后,程序就被10000次的这个循环独占了,直到循环结束为止。在循环的期间,用户的按什么按钮都没有用。

GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。 

use vcl.forms,Winapi.Windows;
procedure
delay(MSecs: LongInt); var FirstTickCount, Now: LongInt; begin FirstTickCount := GetTickCount(); repeat Application.ProcessMessages; Now := GetTickCount(); until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount); end;

//调用,延迟1秒

delay(1000);  

 

posted @ 2022-08-10 14:35  一曲轻扬  阅读(471)  评论(0)    收藏  举报