Application->ProcessMessages();

Application.ProcessMessages的用法意义

在循环中加Application.ProcessMessages是可以防止其他控件没响应,举个例子容易明白:假如你的窗体上有两个按钮,一个“计算”,一个“停止”,如果你的计算是密集运算或复杂处理,当你点了“计算”钮后,你将发现“停止”按钮不会响应你的点击了,

也就是说,你无法随时使计算过程停下来。而倘若你在计算的代码中加入Application.ProcessMessages,则你的程序就有机会响应其它的事件了。

在大量的循环运算,又不想使用多线程时,为了计算机在运算时能响应用户的操作,又不破坏指令执行.

Application.ProcessMessages 就是干这个的!

application.ProcessMessages的主要作用使程序在循环时能够相应外界事件。一般情况下,程序在循环的时候不响应外界事件。直到循环结束为止才能接受和响应外界事件。application.ProcessMessages可以有效的解决循环循环的独占问题,能够暂时中断应用程序的执行。比如,你要设计一个计算,这个计算需要循环10000次。当循环开始到500次的时候,用户突然不想计算下去了,它想取消这个计算,这时候你就可以设置一个cancel按钮,然后在循环体内部合适的位置application.ProcessMessages。来处理cancel按钮的信息,中断循环。如果你在循环体内没有application.ProcessMessages这句。当循环开始后,程序就被10000次的这个循环独占了,直到循环结束为止。在循环的期间,用户的按什么按钮都没有用。

时间: 2024-11-11 02:45:38

Application->ProcessMessages();的相关文章

复制文件时,如何显示进度条(使用BlockRead函数读取数据,并插入application.ProcessMessages)

procedure mycopyfile(sourcef,targetf:string;i:integer); var FromF,ToF:file; NumRead,NumWritten:Integer; Buf:array[1..2048] of Char; n:integer; begin AssignFile(FromF,sourcef); Reset(FromF, 1); { Record size = 1 } AssignFile(ToF,targetf); { Open outpu

Application.ProcessMessages的作用

参考链接:http://www.cnblogs.com/huangygdelphi/articles/1896944.html https://zhidao.baidu.com/question/471496371.html 问题来源:http://www.cnblogs.com/del/archive/2011/05/09/2041290.html 最大的作用就是减少假死.比如当你执行一个很大的循环语句,这时候程序一直在执行这个循环,那么程序一直在专心致志的执行,就给人的感觉是程序死了,但实际

Application.ProcessMessages用法

参考:http://cqujsjcyj.iteye.com/blog/380926 我想你可能还有点模糊.举个例子容易明白:假如你的窗体上有两个按钮,一个“计算”,一个“停止”, 如果你的计算是密集运算或复杂处理,当你点了“计算”钮后,你将发现“停止”按钮不会响应你的点击了,也就是说,你无法随时使计算过程停下来.而倘若你在计算的代码中加入Application.ProcessMessages,则你的程序就有机会响应其它的事件了. 在大量的循环运算,又不想使用多线程时,为了计算机在运算时能响应用户

ExitProcess and Application.Termined

Application.Terminate 只是呼叫 PostQuitMessage 這個 Windows API 表明程式準備要結束而已, 它並不會立即中止整個程式, 也不會強迫終止 若有其他程序還在運行, 則程式很可能會發生如你描述的那種情形 Application.Terminate 的詳細說明, 請參照 Delphi 的 Help , 雖然說明並不多 而 ExitProcess , 則是直接且乾淨地終止程式 MSDN 對此有詳細的說明, 請參照: http://msdn.microsof

Indy FTP 警告:Only one TIdAntiFreeze can be active in an application

> Should I use a AntiFreeze component on every form I have a TIdTCPClient > component?  Or is one enough to handle the whole Application? One is enough. According to the Indy help file, -------- Only one TIdAntiFreeze can be active in an application

使用RemObjects Pascal Script (转)

http://www.cnblogs.com/MaxWoods/p/3304954.html 摘自RemObjects Wiki 本文提供RemObjects Pascal Script的整体概要并演示如何创建一些简单的脚本. Pascal Script包括两个不同部分: 编译器 (uPSCompiler.pas) 运行时 (uPSRuntime.pas) 两部分彼此独立.可以分开使用,或通过TPSScript 控件使用他们,这个控件定义在uPSComponent.pas单元,对这两个部分进行简

Delphi组件indy 10中IdTCPServer修正及SSL使用心得

indy 10终于随着Delphi2005发布了,不过indy套件在我的印象中总是复杂并且BUG不断,说实话,不是看在他一整套组件的面子上,我还是喜欢VCL原生的Socket组件,简洁,清晰.Indy9发展到了indy10几乎完全不兼容,可叹啊.言归正传.在使用IdTCPServer组件的时候发现了他的漏洞,他的OnConnec,OnExecute,OnDisconnect等事件是在其他线程中执行的,通常情况下这没有问题,但是在特殊的情况下会造成问题,如果其他部分的程序写得有问题就会出现漏洞.

老陈---谈Delphi中SSL协议的应用[转]

摘要:本文主要介绍如何在Delphi中使用SSL协议.一共分为七个部分:(1)SSL协议是什么?(2)Delphi中如何使用SSL协议?(3)SSL客户端编程实例.(4)SSL服务端编程实例.(5)SSL证书编程实例.(6)中间人欺骗实例.(7)其它.本文作者同时有一个用SSL协议编写的作品叫SSLPROXY,感兴趣的读者可以从作者主页http://www.138soft.org下载. 一:SSL协议是什么?  SSL是一种加密传输协议.引用网上一段话:SSL 是Secure socket La

改进的延时函数Delay(使用MsgWaitForMultipleObjects等待消息或超时的到来)

解决上一节中延时函数占CPU使用率(达50%)的第二种方法是利用消息机制,通过API函数MsgWaitForMultipleObjects等待消息或超时的到来,从而避免使用循环检测使CPU占用率过高.完整的改进版Delay函数代码如下: [delphi] view plaincopyprint? procedure Delay(dwMilliseconds:DWORD); var endTick: DWORD; Event: THandle; begin Timer1.Enabled:=Fals

Delphi下获取IE的UserAgent的方法

方法一:使用SHDocVw, MSHtml单元提供的一些方法利用浏览器的特性来获取. uses SHDocVw, MSHtml; function GetUserAgent: string;var  Doc: IHTMLDocument2;  win: IHTMLWindow2;  wb: TWebBrowser;begin  Result := '';  try    wb := TWebBrowser.Create(nil);    try      wb.Navigate('about:b