`

Application.ProcessMessages用法:

阅读更多

Application.ProcessMessages用法:

我想你可能还有点模糊。举个例子容易明白:假如你的窗体上有两个按钮,一个“计算”,一个“停止”,
如果你的计算是密集运算或复杂处理,当你点了“计算”钮后,你将发现“停止”按钮不会响应你的点击了,
也就是说,你无法随时使计算过程停下来。而倘若你在计算的代码中加入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;

 

 

 

分享到:
评论
1 楼 nTalgar 2013-10-08  
非常感谢分享!

相关推荐

    Delphi WebBrowser 将一段HTML文字显示在浏览器中.rar

     while(tag=0) do Application.ProcessMessages;  vv := VarArrayCreate([0, 0], varVariant);  HTMLDocument := WebBrowser1.Document as IHTMLDocument2;  HTMLDocument.Write(PSafeArray(TVarData(vv).VArray...

    delphi之多线程编程(一).pdf

    描述:该文档内容围绕Delphi编程语言的多线程编程实践展开,从简单的线程创建到线程间的协作,展示了如何利用Delphi实现多线程编程,并讨论了相关的API使用方法。 标签:技术及资料 知识点: 1. Delphi中的多线程...

    Delphi进度条 显示状态栏检查框..rar

    使用`Application.ProcessMessages`可以允许界面更新,但要谨慎,因为它可能导致意外的用户输入。 通过以上步骤,你可以在Delphi应用中创建一个具有进度条和状态栏检查框的用户界面,以提供更丰富的用户体验。记得...

    广联达delphi笔试题

    - **Application.ProcessMessages** 方法同样用于处理消息队列,但它与 DoEvents 的区别在于前者是阻塞式的处理方式,而后者是非阻塞式的。 - **Application.DoEvent** 并不存在于 Delphi 中。 **答案:B) ...

    进度条DEMO_DELPHI进度条_

    Application.ProcessMessages; // 更新界面 end; end; ``` 压缩包中的文件列表揭示了项目的基本结构: - `Project1.cfg`:编译配置文件,可能包含了一些编译选项。 - `UForm_Process.dcu`、`Unit1.dcu`、`...

    webbrowset操作纪要

    以上就是Delphi中`WebBrowser`组件的一些基本操作和高级用法,通过这些方法我们可以轻松地实现网页的导航、加载监控、页面元素交互等功能。这些技术对于开发具有网页浏览功能的应用程序来说至关重要。

    TGauge组件的用法示例,Delphi源码下载..rar

    Application.ProcessMessages; end; end; ``` 四、高级用法 1. 自定义样式:你可以通过覆盖TGauge的Paint方法来自定义Gauge的绘制逻辑,以创建独特的视觉效果。 2. 集成其他组件:可以将TGauge与TTimer组件结合,...

    Delphi状态栏进度条实例..rar

    在Delphi中,可以使用OnProgress事件或直接调用Progress方法来更新进度。 ```delphi procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin ProgressBar1.Min := 0; ProgressBar1.Max := 100;...

    Delphi延时函数

    在这个例子中,我们使用了`Application.ProcessMessages`来处理应用程序的消息队列,这样即使在延时过程中,用户界面仍能保持响应。`Sleep(1)`是用来避免CPU占用过高的情况,当没有消息需要处理时,线程会短暂睡眠,...

    delphi+进度条

    // 如果任务允许,可以使用Application.ProcessMessages更新界面 Application.ProcessMessages; end; end; ``` 6. **事件驱动的进度更新** 也可以通过绑定OnProgress事件来更新进度条,这适用于多线程或多...

    delphi写的全局鼠标钩子

    3. **消息循环**:为了确保钩子能够接收到消息,你需要一个消息循环,例如在主窗体的`Application.MainFormOnTaskbar`事件中加入`Application.ProcessMessages`。 4. **卸载钩子**:当不再需要全局鼠标钩子时,使用...

    delphi dbgrid 导出Excel表

    Application.ProcessMessages; end; Clipboard.Clear; Clipboard.Open; Clipboard.AsText := str; Clipboard.Close; excelapp := CreateOleObject('Excel.Application'); excelapp.Workbooks.Add(1); ...

    aas.rar_DELPHI进度条_delphi 进度条_进度条

    你可以使用 `Application.ProcessMessages` 函数确保界面在处理耗时操作时保持响应。但需要注意,过多使用此函数可能导致性能下降,因此应谨慎使用。 4. **异步处理**:如果任务是异步执行的,如网络下载或大文件...

    delphi面试题 delphi题目

    - 应调用Application.ProcessMessages,因为它处理应用程序的消息队列,允许用户界面更新而不阻塞主线程。 4. THouse类实例大小: - THouse的InstanceSize是40字节,包括FOwner(4字节),FPosition(8字节),...

    广联达Delphi笔试题

    解释:在 Delphi 中,如果我们想防止界面窗体“僵死”,可以调用 Application.ProcessMessages 方法。这将使得应用程序可以响应用户的输入和事件,从而防止界面窗体“僵死”。 4. 有如下类定义,请问类 THouse 的 ...

    详细描述了Delphi多线程编程,超级简单易懂

    2. **使用Application.ProcessMessages**:虽然可以部分解决问题,但在处理消息时会中断循环。 ```delphi procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin for i := 0 to 500000 do ...

    Delphi 播放声音文件源码

    这段代码首先创建了一个 TMediaPlayer 对象,然后指定了声音文件的路径,接着调用 Open 方法打开文件并使用 Play 方法播放。在等待播放完成的过程中,`Application.ProcessMessages` 用于处理消息循环,确保程序不...

    delphi2010多线程编程

    在Delphi中,使用Application.ProcessMessages可以解决一些问题,例如在循环中不断地刷新UI界面。但是,这种方法并不是真正的多线程编程,程序仍然是单线程的。 三、使用TThread类实现多线程 Delphi提供了TThread...

    滚动模式进度条(delphi)

    5. **模拟进度**:在执行长时间任务时,可以使用`Application.ProcessMessages`来模拟进度。例如,在循环中每次完成一部分工作后,更新`Position`并调用`Application.ProcessMessages`,这样用户界面可以保持响应,...

    dephi延时代码

    这种方法虽然可能在CPU使用率上略高,但对于提升用户体验而言,这种权衡是值得的。 ### 结论 在Delphi中,通过自定义延时函数而非直接使用`Sleep`,可以有效地解决UI冻结的问题,提高程序的整体响应性和用户体验。...

Global site tag (gtag.js) - Google Analytics