Touches clavier (fleches ne répondent pas avec "Form_KeyDown"

Résolu
boujidriss - 28 janv. 2013 à 00:53
boujidriss Messages postés 2 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 1 janvier 2018 - 1 janv. 2018 à 22:53
Bonjour,
J'ai écrit un petit programme qui me permet de visualiser des images que je
charge auparavent dans un "listView" (nommé EdImBdCo).
A l'aide de deux "CommandButton" (nommés CmdBack et CmdFront) je peux faire
défiler mes fichiers images vers l'arrière ou vers l'avant.
Jusqu'ici pas de probléme.
Mon souci est qu'en voulant apporter des améliorations j'ai ajouté du code
afin d'utiliser les touches de clavier (fléche gauche et droite) et celà dans
"Form_KeyDown".
Mais quand j'utilise ces touches, elles réagissent comme si j'utilisai la touche "Tabulation"
et le curseur ne fait que se déplacer d'un bouton à l'autre.

Merci pour votre aide.

Ci dessous le code concernées :

EdImBdCo_______________________
| |
|13012011133.jpg |
|13012011135.jpg |
|13012011138.jpg |
|13012011140.jpg |
|13012011141.jpg |
|13012011142.jpg |
|13012011145.jpg |
|13012011146.jpg |
|13012011147.jpg |
| |
--------------------------------
___________ ___________
| < Arrière | | > Suivant |
------------- -------------

Private Sub CmdBack_Click()
If EdImBdCo.List1.ListIndex > 0 Then
EdImBdCo.List1.ListIndex = EdImBdCo.List1.ListIndex - 1
If EdImBdCo.List1.ListIndex = 0 Then
CmdBack.Visible = False
End If
CmdFront.Visible = True
End If
End Sub

Private Sub CmdFront_Click()
If EdImBdCo.List1.ListCount > EdImBdCo.List1.ListIndex + 1 Then
EdImBdCo.List1.ListIndex = EdImBdCo.List1.ListIndex + 1
If EdImBdCo.List1.ListIndex + 1 = EdImBdCo.List1.ListCount Then
CmdFront.Visible = False
End If
CmdBack.Visible = True
End If
End Sub

Private Sub Form_Load ()
KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 39 _
Or KeyCode = 38 Then
CmdFront_Click
End If
If KeyCode = 37 _
Or KeyCode = 40 Then
CmdBack_Click
End If
KeyCode = 0
End Sub

8 réponses

Bonjour.

Avec KeyPreview = True et la touche Ctrl enfoncée, ça marche ! Je viens de le tester. Je n'était plus trop sûr de moi, car cela faisait longtemps que je n'avais plus programmé en VB6. Pour ceux que cela pourrait intéresser, cela fonctionne de même en VB 2010, ce que j'ai exploité dans mon dernier CodeSource.

Je salue ucfoutu au passage.


Étant illettré, je signe d'une croix : ×
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 janv. 2013 à 19:21
Je te salue également, Zermelo.
Oui, puisque ce ne serait plus les flèches, mais CTRL + flèche
Ceci étant dit, je ne comprend absolument pas l'intérêt de cette complication (il faudrait en plus en informer l'utilisateur car non "intuitif"), alors qu'il lui suffit de donner systématiquement le focus à sa listview qui, elle réagira bien au Kerydown.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 janv. 2013 à 08:45
Bonjour,
Windows intercepte prioritairement certaines touches et les traite comme IL l'entend, en fonction du contexte.
Mets donc en toute première ligne de ton évènement KeyDown
MsgBox KeyCode
et tu t'apercevras que tu n'auras même pas de message affiché si tu presses une touche flêche si, par exemple, le focus est à ce moment-là donné à un bouton de commande.
Tes flêches ne fonctionneront donc comme toi, tu l'entends, que si pour être utilisées au sein-même d'un contrôle qui les gère (textbox, etc ...), qui douit donc être celui qui a le focus.
Voilà.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
2
boujidriss Messages postés 2 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 1 janvier 2018
1 janv. 2018 à 22:53
Merci de ton aide
0
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
28 janv. 2013 à 10:01
Salut

Pour que la forme soit la première à recevoir les touches, il faut que son attribut KeyPreview soit à True

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 le partage (Socrate)
2

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 janv. 2013 à 10:06
Bonjour, jack,
Keypreview à True ou pas (et d'ailleurs il l'a bien mise à True au Load même) cela ne marchera pas pour les raisons que j'ai signalées.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
2
Bonjour,
Merci pour vos réponses.
Et votre astuces Ctrl+Flèche marche effectivement trés bien.
Quand à "l'intérêt de cette complication" je vous signale que si la souris venait à lacher, le recours au clavier serait d'un grand secours. Un petit "Tooltiptext" et le jour est joué.
D'ailleur dans tous mes programmes j'ajoute toujours des raccourcis clavier.
Merci infiniment de votre aide.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 janv. 2013 à 07:30
Quand à "l'intérêt de cette complication" je vous signale que si la souris venait à lacher, le recours au clavier serait d'un grand secours.

et en quoi cela ne serait pas "réglé" (sans souris) par ceci :
donner systématiquement le focus à sa listview qui, elle réagira bien au Kerydown

?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
29 janv. 2013 à 07:49
Et j'ai adoré ceci :
Quand à "l'intérêt de cette complication" je vous signale que si la souris venait à lacher, le recours au clavier serait d'un grand secours. Un petit "Tooltiptext" et le jour est joué.

Je me demande comment le tooltiptext, déclenché au survol de la souris sur un contrôle, pourrait être déclenché lorsque la souris ne fonctopnne pas
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous