表单 OnClick 事件处理程序 - 如何重叠其他事件处理程序



我在为我的表单编写验证函数时遇到了一点麻烦。

我的表单中有一个分组框,在此

分组框上有几个按钮,在此表单底部有一个状态栏。我编写了一个函数来在状态栏面板中显示验证消息。我有一个计时器,消息在状态栏中可见五秒钟,就像对用户的提示。

但我希望,如果在消息自行消失之前,用户碰巧单击表单中的任何对象(分组框、面板、按钮......任何地方),我可以使用表单 OnClick 清除验证消息。

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

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

提前感谢您,对不起我的英语和任何拼写或语法错误。

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

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

其中ClearStatusBarMessage是清除提示的代码。

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

我最近不得不解决一个类似的问题。我处理了表单事件

OnMouseActivate

从帮助中复制和粘贴:

当用户用鼠标

指针在控件上按下鼠标按钮并且父窗体未处于活动状态时发生。

我使用德尔福 2007

最新更新