2017-09-18 6 views
0

Tmainform.OnKeyDownを使用しています。フォームに追加されたコントロールやフレームのほかに、常に正しく起動されます。FireMokeyでメインフォームのOnMouseDownイベントはどのように機能しますか?

同じ動作がOnMouseDownに必要です。

私の目標は、ユーザーの行動を追跡することです。キーボードやマウスのクリックがなくx分後にアプリケーションを終了したい。

編集:TMainForm.OnMouseDownは決して解雇されません。私はイベントで何もしたくない、ちょうどユーザーが生きてクリックしていることを知っている。

+0

OnMouseDownイベントで発生している問題を明確にしてください。 – Duns

答えて

0

アクティブコントロールの前にキーストロークを表示するフォームでは、フォームオブジェクトインスペクタ内で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

私は何か「グローバル」を探していたので、私はまだコントロールの中で何も変えていません。ユーザーの選択に応じて、メインフォーム上に何百ものコントロールを含むフレームを挿入します。だから私は挿入されたフレームの動作を変更しないようにしていました。私の目標は、ユーザーがまだアプリケーションを使用しているかどうかを見つけることです。 –

関連する問題