我在 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(使用前将#替换为@)