来自帮助文件: procedure TForm1.FormCreate(Sender: TObject);begin Button1.Caption := 'Ignore Messages'; Button2.Caption := 'Process Messages';end;procedure TForm1.Button1Click(Sender: TObject);var I, J, X, Y: Word; begin I := 0; J := 0; while I < 64000 do begin Randomize; while J < 64000 do begin Y := Random(J); Inc(J); end; X := Random(I); Inc(I); end; Canvas.TextOut(10, 10, 'The Button1Click handler is finished');end;procedure TForm1.Button2Click(Sender: TObject);var I, J, X, Y: Word; begin I := 0; J := 0; 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;
http://www.csdn.net/expert/Topic/203/203899.shtm
procedure TForm1.Button1Click(Sender: TObject); var I: Integer; begin for I := -100000 to 100000 do begin Caption := IntToStr(I); //程序忙着运算不处理其它消息//这样象死机一样 // end; end;procedure TForm1.Button2Click(Sender: TObject); var I: Integer; begin for I := -100000 to 100000 do begin Caption := IntToStr(I); Application.ProcessMessages; //程序虽然忙,可也要抽时间处理其它消息//比如你可以移动它 //由于要处理其它消息所有会降低执行速度 end; end;
用了ProcessMessages如果我没有其他的消息,会不会降低效率
我用update可不可以用这个,如何用
>用了ProcessMessages如果我没有其他的消息,会不会降低效率 会降低效率,并且不可能没有消息产生(系统时间消息呢?) >我用update可不可以用这个,如何用 //update其实就是更新窗体 procedure TWinControl.Update; begin if HandleAllocated then UpdateWindow(FHandle); end; //一般作启动封面的时候会用到
zswang(伴水)(需要充充电) 我是用在Tquery中的sql语句 如with query1 do begin clear; sql.add('update **************************'); execsql; Appliction.ProcessMessage; end; 这样用有没有用
with query1 do begin clear; sql.add('update **************************'); execsql; //执行完之后才执行下一句 Appliction.ProcessMessage; //所有没有你象要的结果 end;//建议你用avi来给用户看看,知道没有死机就行
除了在循环中,如果在我想服务器update时可不可以用。
procedure TForm1.FormCreate(Sender: TObject);begin
Button1.Caption := 'Ignore Messages';
Button2.Caption := 'Process Messages';end;procedure TForm1.Button1Click(Sender: TObject);var
I, J, X, Y: Word;
begin
I := 0;
J := 0;
while I < 64000 do
begin
Randomize;
while J < 64000 do
begin
Y := Random(J);
Inc(J);
end;
X := Random(I);
Inc(I);
end;
Canvas.TextOut(10, 10, 'The Button1Click handler is finished');end;procedure TForm1.Button2Click(Sender: TObject);var
I, J, X, Y: Word;
begin
I := 0;
J := 0;
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;
var
I: Integer;
begin
for I := -100000 to 100000 do begin
Caption := IntToStr(I); //程序忙着运算不处理其它消息//这样象死机一样
//
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
I: Integer;
begin
for I := -100000 to 100000 do begin
Caption := IntToStr(I);
Application.ProcessMessages; //程序虽然忙,可也要抽时间处理其它消息//比如你可以移动它
//由于要处理其它消息所有会降低执行速度
end;
end;
会降低效率,并且不可能没有消息产生(系统时间消息呢?)
>我用update可不可以用这个,如何用
//update其实就是更新窗体
procedure TWinControl.Update;
begin
if HandleAllocated then UpdateWindow(FHandle);
end;
//一般作启动封面的时候会用到
我是用在Tquery中的sql语句 如with query1 do
begin
clear;
sql.add('update **************************');
execsql;
Appliction.ProcessMessage;
end;
这样用有没有用
begin
clear;
sql.add('update **************************');
execsql; //执行完之后才执行下一句
Appliction.ProcessMessage; //所有没有你象要的结果
end;//建议你用avi来给用户看看,知道没有死机就行
我得sleep占用资源太多
Appliction.ProcessMessage
仍然没解决到sleep得假4机问题
这一句语句在的地方,就允许系统[是os还是应用程序]响应一个消息。响应了一个消息后程序继续执行下面的语句。是不是这样,我只得是,它是不是只响应一个消息,还是在一个时间段响应消息,还是在这字后可以响应消息,还是有其他条件。