KeyDown : vbKeyLeft, vbKeyRight,vbkeyUp et vbKeyDown ignorées [Résolu]

BABUDROME 151 Messages postés lundi 16 janvier 2006Date d'inscription 19 avril 2016 Dernière intervention - 2 nov. 2009 à 00:40 - Dernière réponse : BABUDROME 151 Messages postés lundi 16 janvier 2006Date d'inscription 19 avril 2016 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 2 nov. 2009 à 01:02
3
Merci
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.

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 2 nov. 2009 à 07:23
3
Merci
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)

Merci jmf0 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de jmf0
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 2 nov. 2009 à 01:00
0
Merci
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)
Commenter la réponse de cs_Jack
BABUDROME 151 Messages postés lundi 16 janvier 2006Date d'inscription 19 avril 2016 Dernière intervention - 3 nov. 2009 à 10:53
0
Merci
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
Commenter la réponse de BABUDROME
jmf0 1566 Messages postés mardi 26 décembre 2000Date d'inscription 5 avril 2013 Dernière intervention - 3 nov. 2009 à 11:01
0
Merci
Je ne connais aucun moyen de bloquer par VB ce type d'interception, qui se fait à bas niveau.
Commenter la réponse de jmf0
BABUDROME 151 Messages postés lundi 16 janvier 2006Date d'inscription 19 avril 2016 Dernière intervention - 4 nov. 2009 à 00:26
0
Merci
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
Commenter la réponse de BABUDROME

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.