今天遇到个奇怪的问题,代码如下。
procedure TForm2.btn1Click(Sender: TObject);
var
i: Integer;
begin
i := 0;
Runing := True;
while Runing do
begin
edt1.Text := IntToStr(i);
Inc(i);
Application.ProcessMessages;
Sleep(50);
end;
end;procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Runing := False;
end;
用模式窗口打开,Form2.ShowModal后,再点击btn1开始循环,循环的时候点击窗体的关闭按键,CloseQuery事件就没反应了。
如果只是普通的Form2.Show,这样是正常没问题的。
procedure TForm2.btn1Click(Sender: TObject);
var
i: Integer;
begin
i := 0;
Runing := True;
while Runing do
begin
edt1.Text := IntToStr(i);
Inc(i);
Application.ProcessMessages;
Sleep(50);
end;
end;procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Runing := False;
end;
用模式窗口打开,Form2.ShowModal后,再点击btn1开始循环,循环的时候点击窗体的关闭按键,CloseQuery事件就没反应了。
如果只是普通的Form2.Show,这样是正常没问题的。
解决方案 »
- 菜鸟提问。。
- 紧急求救!线程中的变量定义的位置问题!
- 双向链表的类,不知道怎么用法
- 关于Delphi操作Excel中的分页符处理
- 弱问一下,自定义的函数和变量放在哪声明?
- 怎样在程序中向combobox的items属性中添加数据?
- 请问那里有源码下载呀??????
- IE的右键菜单中有个编码选项,怎样在自己的程序中调用?我想把他放到菜单栏里去。
- DBCOMBOBOX是下拉列表框,类示此控件的可上下调的控制(有上下二个小三角如同SpinButton1)是哪个呀?
- 在delphi不同窗体中调用dm中的adoquery,不同的窗体执行不同的SQL代码
- delphi语法问题!
- 搜遍了整个论坛,找不到能把stringgrid上的数据导出成一个excel文件
可以这么做,重载 procedure WndProc(var message:Tmessage); 在这里实现关闭窗体,并且 CloseQuery 恢复触发
procedure TForm2.WndProc(var message: TMessage);
begin
if Visible then
begin
if message.Msg=WM_CLOSE then
begin
Runing := false;
//Close;
end;
end;
Inherited WndProc(message);
end;