如何在Delphis MessageDlg中忽略计时器事件

2023-12-29

我在 Delphi 中设置了一个全局异常处理程序。在某些严重的异常情况下,会显示一条错误消息(后跟 Halt())。显示错误消息时,Delphi 正在处理消息队列、处理计时器事件,这会导致进一步的错误。

我想要的是显示一个不处理计时器事件的错误对话框。这在德尔福怎么可能呢?

Edit:我使用 Dialogs.MessageDlg(...) 显示消息。


您可以过滤排队的消息,例如WM_TIMER, with TApplication.OnMessage http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TApplication.OnMessage.

procedure TMainForm.ApplicationMessage(var Msg: TMsg; var Handled: Boolean);
begin
  if ShowingFatalErrorDialog then
    if Msg.Message = WM_TIMER then
      Handled := True;
end;

将该事件处理程序直接分配给Application.OnMessage或使用TApplicationEvents object.

显然你必须提供实现ShowingFatalErrorDialog但我相信您很清楚如何做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Delphis MessageDlg中忽略计时器事件 的相关文章

随机推荐