Application.ProcessMessages用法

参考:http://cqujsjcyj.iteye.com/blog/380926

  我想你可能还有点模糊。举个例子容易明白:假如你的窗体上有两个按钮,一个“计算”,一个“停止”,

  如果你的计算是密集运算或复杂处理,当你点了“计算”钮后,你将发现“停止”按钮不会响应你的点击了,也就是说,你无法随时使计算过程停下来。而倘若你在计算的代码中加入Application.ProcessMessages,则你的程序就有机会响应其它的事件了。

  在大量的循环运算,又不想使用多线程时,为了计算机在运算时能响应用户的操作,又不破坏指令执行。所起作用类似于VB中DoEvent方法. 

procedure Delay(MSecs: Longint);
//延时函数,MSecs单位为毫秒(千分之1秒)
var
  FirstTickCount, Now: Longint;
begin
  FirstTickCount := GetTickCount();
repeat
  Application.ProcessMessages;
  Now := GetTickCount();
until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;

  

原文地址:https://www.cnblogs.com/xumenger/p/4454117.html