2017-09-18 31 views
0

我正在使用Tmainform.OnKeyDown,除了添加到窗體上的控件或框架之外,它始終會正確觸發。如何使用Firemokey在我的MainForm上運行OnMouseDown事件?

我需要OnMouseDown的相同行爲。

我的目標是跟蹤用戶的活動。在沒有鍵盤或鼠標點擊的情況下,x分鐘後,我想關閉應用程序。

編輯:TMainForm.OnMouseDown永遠不會被解僱。我不想對事件做任何事情,只要知道用戶還活着並點擊即可。

+0

請說明您遇到OnMouseDown事件時遇到的困難。 – Duns

回答

0

對於在活動控件之前查看擊鍵的窗體,您需要在窗體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

我還沒有改變任何控件,因爲我正在尋找「全球」的東西。我根據用戶的選擇在主窗體中插入數百個控件。所以我試圖避免改變插入幀的行爲。我的目標是查找用戶是否仍在使用應用程序,在某段時間沒有用戶交互的情況下我想退出。 –

相關問題