KeyDown : vbKeyLeft, vbKeyRight,vbkeyUp et vbKeyDown ignorées

Résolu
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016 - 2 nov. 2009 à 00:40
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016 - 4 nov. 2009 à 00:26
Salut, Voici mon problème :

Avec Visaul Basic 6,
J'utilise la routine suivante pour laquelle la réaction est conforme aux besoins attendus
sauf pour les touches correspondant aux flèches ( vbKeyLeft, vbKeyRight, vbKeyUp et vbKeyDown ) où aucune réaction intervient.

Private Sub Form_KeyDown(KeyCode As Integer, shift As Integer)
Touche = "" ' Debug.Print KeyCode
Select Case KeyCode
Case vbKeyF1: CmdAide_Click: Exit Sub
Case vbKeyF2: If SwF2 Then DémoStop_Click Else SwF2 = True: DemDémo
Case vbKeyF3: CmdSon_Click
Case vbKeyF4: ImageExit_Click
Case vbKeyF12: RappelCmdSpéciales
Case vbKeyEscape: FinAide: If SWDémo Then DémoStop_Click
Case vbKeyLeft, 71, 100: Touche = "g" 'touche g ou 4 ou flèche "gauche"
Case vbKeyUp, 72, 104: Touche = "h" 'touche h ou 8 ou flèche "haut"
Case vbKeyRight, 68, 102: Touche = "d" 'touche d ou 6 ou flèche "droite"
Case vbKeyDown, 66, 98: Touche = "b" 'touche b ou 2 ou flèche "bas"
Case 51: Touche = Qot 'touche "
Case 54, 109: Touche = "-" 'touche -
Case 107, 187: Touche = "+" 'touche +
...

Il me semble que les appuis sur ces touches sont redirigés pour d'autres fonctionnalités, mais lesquelles ?
Quelqu'un peut-il m'expliquer cela ?

Avec les remerciements anticipés, Bab

PS : Il m'arrive fréquemment en création de nouveau programme, que les fonctions Chr(..) ne soient pas reconnues.
Un composant est-il spécifique à cette fonction ?

bab

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 nov. 2009 à 01:02
Pour le Chr, c'est un bug de l'IDE de VB6 qui apparait quelque fois.
Il te suffit de sortir du projet puis de le réouvrir, éventuellement redémarrer.
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
2 nov. 2009 à 07:23
Bonjour,

La question était :
Il me semble que les appuis sur ces touches sont redirigés pour d'autres fonctionnalités, mais lesquelles ?
Quelqu'un peut-il m'expliquer cela ?

La propriété KeyPreview étant supposée = True, bien sûr :
Les touches en cause ne sont pas redirigées mais interceptées par Windows.
Tu as oublié la touche Tab, d'ailleurs.

Leur interception se fait différemment selon que l'on est ou non dans une zone d'édition.
Hors édition : navigation entre les contrôles
En Edition : navigation dans la saisie

Voilà, de manière très générale (un inventaire exhaustif serait trop long).

A noter que la touche ENTER est égalmement interceptée dans certains cas (commandbutton poar exemple)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 nov. 2009 à 01:00
Salut
Apprends à débuguer avec tes touches F8, F9 et F5 (voir menu Débogage)
Une fois le programme arrêté sur une ligne de ton programme, il te suffit de survoler les variables pour voir leur contenu.
S'il y a réorientation, tu le verras en exécutant pas à pas (F8)

Voir aussi l'utilisation de la propriété "KeyPreview" de la forme

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016
3 nov. 2009 à 10:53
Merci de ta réponse.
Cependant, y-a-t-il un moyen de bloquer les interceptions de Windows ?

Pour Tab, j'ai pris soin de mettre, pour tous les boutons de commande, leur propriété TabStop à False.

bab
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
3 nov. 2009 à 11:01
Je ne connais aucun moyen de bloquer par VB ce type d'interception, qui se fait à bas niveau.
0
BABUDROME Messages postés 151 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 19 avril 2016
4 nov. 2009 à 00:26
Merci des tuyaux.
1) Le pas à pas n'intercepte pas les touches flèches ou Enter, donc aucun moyen de 'Debuger'.
Ces touches sont vraisemblable interceptées par Windows avant que VB la voit.
J'ai 2 programmes qui fonctionnent correctement (avec le même KeyDown et la détection des touches flèches) mais je ne vois pas la différence...

2) C'est possible pour le Pb. du Chr (j'ai eu le même avec Str) que ta solution soit bonne. Je la testerai dès que Pb. reviendra.

Salut à toi. Bab
0
Rejoignez-nous