OVH Cloud OVH Cloud

Comment capturer au niveau Windows Form la frappe d'une touche fonction (F8 par exemple) ?

7 réponses
Avatar
Gilbert Tordeur
Bonjour.
J'ai positionné la propriété KeyPreview de mon formulaire à True, et j'ai
écrit une procédure qui capture l'élément Keypress.
Cette procédure est bien activée lorsque je tape une lettre, mais pas
lorsque je tape une touche Fn. Le but final est de proposer une action
clavier plus simple que Alt/lettre pour cliquer sur un bouton. Que faire ?
Merci de votre aide.

7 réponses

Avatar
Patrick Philippot
Bonjour,

Cette procédure est bien activée lorsque je tape une lettre, mais pas
lorsque je tape une touche Fn. Le but final est de proposer une action
clavier plus simple que Alt/lettre pour cliquer sur un bouton. Que
faire ? Merci de votre aide.



Interceptez l'événement KeyDown.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Gilbert Tordeur
Impeccable. Je ne comprends pas pourquoi KeyDown au lieu de Keypress, mais
ça marche. Merci.
Gilbert

"Patrick Philippot" a écrit dans le
message de news: O5jNO%
Bonjour,

Cette procédure est bien activée lorsque je tape une lettre, mais pas
lorsque je tape une touche Fn. Le but final est de proposer une action
clavier plus simple que Alt/lettre pour cliquer sur un bouton. Que
faire ? Merci de votre aide.



Interceptez l'événement KeyDown.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr



Avatar
Gilbert Tordeur
Ca ne marche pas quand c'est une datagrid qui a le focus. Que faire ?
Gilbert

"Gilbert Tordeur" a écrit dans le message de
news:
Impeccable. Je ne comprends pas pourquoi KeyDown au lieu de Keypress, mais
ça marche. Merci.
Gilbert

"Patrick Philippot" a écrit dans le
message de news: O5jNO%
Bonjour,

Cette procédure est bien activée lorsque je tape une lettre, mais pas
lorsque je tape une touche Fn. Le but final est de proposer une action
clavier plus simple que Alt/lettre pour cliquer sur un bouton. Que
faire ? Merci de votre aide.



Interceptez l'événement KeyDown.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr







Avatar
Patrick Philippot
> Impeccable. Je ne comprends pas pourquoi KeyDown au lieu de Keypress,
mais ça marche. Merci.



KeyPress traite en fait l'événement WM_KEYCHAR qui est activé quand
Windows se rend compte que la séquence keydown - keyup correspond à un
caractère. Dans ce cas, il tient compte de l'état des touches
d'altération du clavier pour déterminer quel caractère a été
effectivement frappé A ou a par exemple. KeyDown se contente de
retourner le scan code de la touche frappée et ne fait aucun
interprétation.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
Gilbert Tordeur wrote:
Ca ne marche pas quand c'est une datagrid qui a le focus. Que faire ?



Traiter également KeyDown au niveau de la grille et propager l'événement
sur la routine qui le traite pour la feuille.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Gilbert Tordeur
Parfait. Merci.
Gilbert

"Patrick Philippot" a écrit dans le
message de news:
Gilbert Tordeur wrote:
Ca ne marche pas quand c'est une datagrid qui a le focus. Que faire ?



Traiter également KeyDown au niveau de la grille et propager l'événement
sur la routine qui le traite pour la feuille.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr



Avatar
Gloops
Bonjour,

Bon, maintenant que la réponse a été donnée, je propose d'élargir la
question. Supposons que la touche doive interrompre le traitement, mais
à un certain stade du traitement, en évitant d'interrompre en cours de
boucle.

Voir là :
http://www.mvps.org/accessfr/apis/api0030.htm
______________________________________________
Gilbert Tordeur a écrit, le 17/11/2005 10:35 :

Bonjour.
J'ai positionné la propriété KeyPreview de mon formulaire à True, et j'ai
écrit une procédure qui capture l'élément Keypress.
Cette procédure est bien activée lorsque je tape une lettre, mais pas
lorsque je tape une touche Fn. Le but final est de proposer une action
clavier plus simple que Alt/lettre pour cliquer sur un bouton. Que faire ?
Merci de votre aide.