2017-09-18 5 views
0

J'utilise Tmainform.OnKeyDown et il se déclenche toujours correctement, en plus des contrôles ou des cadres ajoutés au formulaire.Comment fonctionne l'événement OnMouseDown sur mon MainForm avec Firemokey?

J'ai besoin du même comportement pour OnMouseDown.

Mon but est de suivre l'activité de l'utilisateur. Après x minutes sans clics ni clics de souris, je veux fermer l'application.

Modifier: TMainForm.OnMouseDown ne se déclenche jamais. Je ne veux rien faire de l'événement, sachez simplement que l'utilisateur est en vie et qu'il clique.

+0

Veuillez préciser quelle difficulté vous rencontrez avec l'événement OnMouseDown. – Duns

Répondre

0

Pour que le formulaire puisse voir les séquences de touches antérieures au contrôle actif, vous devez définir la propriété KeyPreview dans l'inspecteur d'objets de formulaire.

Vous pouvez aussi le faire via le code: Form1.KeyPreview := True;

Il y a une explication importante dans la réponse acceptée ici: How does Delphi's KeyPreview work?

En ce qui concerne votre requête de la souris, comment savez-vous qu'il ne fonctionne pas si vous ne fais rien ici?

Mettez ce code dans votre événement OnMouseDown forms;

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; 

J'espère que cela est utile et répond à votre question.

+0

Pour la prévisualisation des touches, cela fonctionne très bien, mais mousedown sur firemonkey ne fait rien. Cela signifie donc que les événements ne se produisent pas parce que HitTest: = true pour le TForm, mais je suis maintenant au courant. –

+0

@EduardoElias Le formulaire n'a pas de propriété HitTest, mais les contrôles le font. Essayez-vous de recevoir le OnMouseDown pour les autres contrôles dans le formulaire, auquel cas définissez les contrôles OnMouseDown à l'événement OnMouseDown de formulaires et utilisez Expéditeur (TObject) pour déterminer quel contrôle l'a envoyé. Aussi, avez-vous couvert le formulaire avec un contrôle où HitTest = False? – Craig

+0

Je n'ai encore rien changé dans les contrôles, puisque je cherchais quelque chose de "global". J'insère des cadres avec des centaines de contrôles sur le formulaire principal selon le choix de l'utilisateur. Donc j'essayais d'éviter de changer le comportement des images insérées. Mon but est de trouver si l'utilisateur utilise encore l'application, après quelque temps sans interaction de l'utilisateur, je veux me déconnecter. –