2

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

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

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

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

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

提前谢谢你,对我的英语和任何拼写或语法错误感到抱歉。

4

2 回答 2

5

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

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

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

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

于 2013-10-25T12:31:47.463 回答
0

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

OnMouseActivate

从帮助中复制和粘贴:

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

我使用德尔福 2007

于 2015-01-26T13:27:37.440 回答