Delphi程序消息无响应的解决办法
1、打开Delphi7集成开发环境,在默认工程的Form1窗体上放两个Button按钮。

2、双击Button1按钮进入OnClick事件方法,写如下代码:
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
begin
for i:=0 to 100000 do
begin
Button1.Caption:=IntToStr(i);
end;
end;

3、F9运行程序,点击Button1,Button1的Caption变化。再点击Button2无响应,因为程序在执行很大循环,只能等待循环结束。

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
begin
if b = true then
begin
Button1.Caption:=IntToStr(i);
Application.ProcessMessages;
end
else
Break;
end;
end;

5、双击Button2进入OnClick事件方法,并写如下代码:
procedure TForm1.Button2Click(Sender: TObject);
begin
b:=False;
ShowMessage('点我');
end;

6、F9运行程序,点击Button1,Button1的Caption变化。再点击Button2则Button1的Caption停止变化,弹出对话框‘点我’
