[WinDev] Événement lors d’éune touche enfoncée

Vincent Lecomte

Comme vous le savez, beaucoup d’événements sont gérés automatiquement pour les champs. Même celui qui permet d’effectuer du code lorsqu’une touche est enfoncée. Habituellement, lorsqu’on est dans le code du champ, il suffit de cliquer sur le bouton “Plus de traitements…” dans la partie inférieure (voir image suivante) et de cocher le(s) événement(s) que l’on souhaite gérer. C’est la version rapide.

Si vous souhaitez que votre événement s’exécute par l’intermédiaire d’une procédure, la manipulation est différente. Nous allons prendre l’exemple d’une procédure qui traite l’appui sur la touche “Entrée”. Voici les différentes étapes à suivre.

Premièrement, il faudra indiquer à WinDev que l’on souhaite utiliser les constantes Windows. Cela se fait grâce à une déclaration externe. Pour plus de simplicité, vous pouvez placer ce morceau de code dans le code global du projet (menu Projet, code global).

EXTERNE “WINCONST.WL”

Ensuite, dans le code d’initialisation de notre champ, on peut utiliser la fonction Événement. Elle reçoit 3 paramètres en entrée : le nom de la procédure à exécuter (chaîne), le nom de l’objet sur lequel s’applique l’élément (MoiMême..Nom si on écrit ce code dans l’initialisation du champ), et enfin le message Windows associé. Dans ce cas-ci, le message est identifié par la constante “WM_KEYDOWN“.

Evénement("lproc_dispDetail", MoiMême..NomComplet, WM_KEYDOWN)

Description : la procédure appelée sera “lproc_displayDetail”, pour le champ en cours, et interceptera l’événement “touche enfoncée”.

D’après la FAQ, la fonction d’interception doit posséder trois paramètres : le message Windows, et veux variables – wParam et lParam, qui sont les deux paramètres du message. On pourra interroger plusieurs variables dont _EVE qui contient différents champs (conservée pour compatibilité). Pour notre procédure, nous n’avons mis aucun paramètre.

Voici le code de la fonction utilisée :

PROCEDURE lproc_dispDetail()

   VK_RETURN est un entier = 0x0d
   nTouche est un entier = VK_RETURN // Touche Entrée

   // Vérifie si la touche Entrée a été appuyée
   SI ToucheEnfoncée(nTouche) ALORS
      // Code.
   FIN

On a déclaré dans cette procédure, deux variables. La première est la touche “Return”, qui a la valeur “0x0d”. La seconde est un entier auquel on assigne cette touche. Si vous souhaitez utiliser la constante prédéfinie, il faut ajouter une déclaration externe supplémentaire dans le code du projet pour le fichier “KeyConst.WL“. Toutes les constantes de ce fichier sont préfixées par “VK_”. Ainsi, le code deviendra :

PROCEDURE lproc_dispDetail()

   // Vérifie si la touche Entrée a été appuyée
   SI ToucheEnfoncée(VK_RETURN) ALORS
       // Code.
   FIN

Voilà, vous savez maintenant gérer cet événement grâce au WLangage.

Bon développement !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Copy link