如何使用Firemokey在我的MainForm上运行OnMouseDown事件?

问题描述:

我正在使用Tmainform.OnKeyDown,除了添加到窗体上的控件或框架之外,它始终会正确触发。如何使用Firemokey在我的MainForm上运行OnMouseDown事件?

我需要OnMouseDown的相同行为。

我的目标是跟踪用户的活动。在没有键盘或鼠标点击的情况下,x分钟后,我想关闭应用程序。

编辑:TMainForm.OnMouseDown永远不会被解雇。我不想对事件做任何事情,只要知道用户还活着并点击即可。

+0

请说明您遇到OnMouseDown事件时遇到的困难。 – Duns

对于在活动控件之前查看击键的窗体,您需要在窗体Object Inspector中设置KeyPreview属性。

你也可以做到这一点通过代码:Form1.KeyPreview := True;

中有公认的答案在这里大量的解释:How does Delphi's KeyPreview work?

关于你的鼠标查询,你怎么知道它是不是,如果你的工作”不在那里做什么?

将此代码放入您的窗体OnMouseDown事件;

PROCEDURE TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
BEGIN 
    CASE Button OF 
    mbLeft: showmessage('Left Mouse Button!'); 
    mbRight: showmessage('Right Mouse Button!'); 
    mbMiddle: showmessage('Middle Mouse Button!'); 
    END; 
END; 

我希望这是有帮助的,并且会回答你的问题。

+0

对于键预览它工作正常,但在firemonkey mousedown什么都不做。所以它意味着事件不会到达那里,因为对于TForm应该有类似HitTest:= true的东西,但是现在我意识到了这一点。 –

+0

@EduardoElias表单没有HitTest属性,但是控件有。您是否试图在窗体内接收其他控件的OnMouseDown,在这种情况下,将控件OnMouseDown设置为窗体OnMouseDown事件,并使用发件人(TObject)来确定哪个控件发送了它。另外,你有没有用HitTest = False的控件覆盖表单? – Craig

+0

我还没有改变任何控件,因为我正在寻找“全球”的东西。我根据用户的选择在主窗体中插入数百个控件。所以我试图避免改变插入帧的行为。我的目标是查找用户是否仍在使用应用程序,在某段时间没有用户交互的情况下我想退出。 –