Form OnClick事件处理程序-如何重叠其他事件处理程序?

art*_*tie 2 delphi

我在向表单编写验证功能时遇到了一些麻烦。

我在窗体内有一个GroupBox,在此GroupBox上有几个按钮,在此窗体的底部有一个StatusBar。我编写了一个在StatusBar面板中显示验证消息的函数。我有一个计时器,消息在状态栏中可见五秒钟,就像对用户的提示一样。

但是我想,如果在消息消失之前,用户碰巧单击了表单内的任何对象(GroupBox,Panel,Button ...中的任意位置),那么我可以使用OnClick表单清除验证消息。

我不想与所有可能的控件进行交互,如果单击了控件,则会清除消息。我只想在Form OnClick上执行一次此操作,但是,对象OnClick事件处理程序将覆盖父(Form)OnClick事件处理程序。

我不知道我是否足够清楚,但是有什么办法可以做到这一点?只需为表单中的每次单击编写代码一次?

预先感谢您,对于我的英语以及任何字法或语法错误,我们深感抱歉。

Dav*_*nan 5

将一个TApplicationEvents组件添加到您的窗体。并为其OnMessage事件实现一个处理程序,如下所示:

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; 
  var Handled: Boolean);
begin
  if Msg.message=WM_LBUTTONDOWN then
    ClearStatusBarMessage;
end;
Run Code Online (Sandbox Code Playgroud)

ClearStatusBarMessage您的代码在哪里清除提示。

每当应用程序在主UI线程上处理排队的事件时,都会调用此事件处理程序。因此,这可能比您想象的要深远。我不确定您的应用程序是如何设计的,但是您可能需要稍微调整代码以获得所需的确切行为。