关于Delphi中的application.ProcessMessages问题

LiangWu25 2003-10-23 05:22:09
很多资料中提到,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
For j = 1 To 10000
DoEvents
Text1.Text = Val(Text1.Text) + 1
Next
Next
End Sub

Private Sub Command2_Click()
MsgBox 1
Unload Me
End Sub
=================================================================
(Delphi Code)
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
edit2.Text:='0';
for i:=1 to 10000 do
Begin
for j:=1 to 10000 do
Begin
application.ProcessMessages;
edit1.Text:=inttostr(strtoint(edit2.text)+ 1);
end;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage('1');
Close;
end;
=================================
当点击VB中的Command2按钮时,马上弹出消息框并关掉应用程序(或点窗体关闭键时会即时关掉程序),可是,点Delphi中的Button2Click时,虽然也弹出消息框,可是应用程序并不关闭,仍在计算,即使点窗体关闭键也要计算完后才关掉。在一些情况下,可能要用到大循环,因此,要给用户提供随时中止程序的功能,那么,在Delphi中,如何才能实现?
...全文
361 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenzheng2k 2003-10-23
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
edit2.Text:='0';
for i:=1 to 10000 do
Begin
for j:=1 to 10000 do
Begin
application.ProcessMessages;
if Application.Terminated then Exit;
edit1.Text:=inttostr(strtoint(edit2.text)+ 1);
end;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage('1');
Application.Terminate;
end;
LiangWu25 2003-10-23
  • 打赏
  • 举报
回复
我并未说APPLICATION。PROCESSMESSAGE可以中止程序,请仔细看我所发的问题.如果是VB的Doevents函数,用户可以在大循环中做其它的处理(非常即时,比如关闭程序),而Delphi中的APPLICATION。PROCESSMESSAGE在做一些处理时,一定要等大循环结束后(关闭程序只是其中之一),所以,这才是让我想知道的地方,有什么方法可以在循环中即时响应用户的操作?
g58521547 2003-10-23
  • 打赏
  • 举报
回复
APPLICATION。PROCESSMESSAGE函数并不是用来终止应用程序,而是让程序在间隔中转而处理其他的消息,
同意楼上的
LiangWu25 2003-10-23
  • 打赏
  • 举报
回复
To lincanwen(密码错误):
我试了一下,程序还是在计算。
lincanwen 2003-10-23
  • 打赏
  • 举报
回复
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage('1');
Application.Terminate; //改为这个。
end;

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧