ProcessMessages; // Doing this, you get the message out. while I < magicnumber do begin Randomize; while J < magicnumber do begin Sleep(10); Y := Random(J); Inc(J); end; X := Random(I); Inc(I); end; Canvas.TextOut(10, 10, 'The Button1Click handler is finished '); end;...
while I < 64000 do begin Randomize; while J < 64000 do begin Y := Random(J); Inc(J); Application.ProcessMessages; end; X := Random(I); Inc(I); end; Canvas.TextOut(10, 10, 'The Button2Click handler is finished'); end; 代码中红色的一行的作用: 如果你运行一个非常耗时的循环,那么...
ProcessMessage: ProcessMessages不允许应用程序空闲,而HandleMessage则允许。 unitUnit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1=class(TForm) Button1: TButton; Button2: TButton;procedureFormCreate(Sender: TObject);procedureButton1Cl...
WndProc或 DefaultWndProc并简单地为每条消息返回true基本上“关闭”ProcessMessages但这样做是不安全的,因...
Randomize; while J < 64000 do begin Y := Random(J); Inc(J); Application.ProcessMessages; end; X := Random(I); Inc(I); end; Canvas.TextOut(10, 10, 'The Button2Click handler is finished'); end; 代码中红色的一行的作用: 如果你运行一个非常耗时的循环,那么在这个循环结束前,你的程序可...
Application.ProcessMessages; sleep(1000) ;// or some other work end; Memo1.Lines.Add('Work ' + IntToStr(WorkLevel) + ' ended.') ; dec(WorkLevel) ; end; 连续2次点击按钮,上面代码当去掉Application.ProcessMessages的时候输出结果完全不同 ...
很多资料中提到,Delphi中的application.ProcessMessages相当于VB中的Doevents函数(转让进程控制),可是,在实际应用中,却不是这么回事。例: (VB Code) Private Sub Command1_Click() Dim i As Integer Dim j As Integer Text1.Text = 0 For i = 1 To 10000 ...
Application.ProcessMessages的作用是让Application去处理消息队伍中的消息。举例说明它的用处:你有一程序,要做一循环,for i:= 0 to query1.recordcount-1 dobegin做某事;endl;运行的时候你会发现,当转到另一程序再转回来的时候,窗体变发白了,除了那个DBGRID。这是为什么,这是因为当你转回自己的程序的时候,系统向你...
4 这时可以用Application.ProcessMessages,使程序可以相应系统消息。在Unit1.pas源代码文件,声明一个全局布尔类型的变量初始值为:True。双击Button1进入OnClick事件方法,修改代码如下:var b:Boolean=True;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var i:Integer;begin for i:=0 to 100000 do...
//Application.ProcessMessages 就是干这个的! var b: Boolean; procedureTForm1.Button1Click(Sender: TObject);var i: Integer; begin b := True; fori := 0toMaxIntdo begin ifbthenText := IntToStr(i)elseExit; Application.ProcessMessages; {!} ...