Détection des flèches

Résolu
Malixxx13
Messages postés
6
Date d'inscription
dimanche 11 mai 2003
Statut
Membre
Dernière intervention
24 octobre 2007
- 21 oct. 2007 à 10:08
Malixxx13
Messages postés
6
Date d'inscription
dimanche 11 mai 2003
Statut
Membre
Dernière intervention
24 octobre 2007
- 24 oct. 2007 à 05:16
Bonjour! Alors voilà ma question ;)

j'essai de faire un programme (en vb 6) qui détecte lorsqu'une touche est pressé(les flèches pour mon programme.) Je sais que le problème a beaucoup été traité, j'ai fait des recherches mais je n'ai rien trouvé qui fonctionnait!

J'ai trouvé qu'en utilisant KeyDown je pouvais le détecter.

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)


Print KeyCode


End Sub

Le problème est que dès que je met un command ou un texte.... cela ne marche plus!

J'aimerais par exemple faire déplacer un command en appuyant sur la flèche correspondante par exemple :

if keycode = 37 then

command1.left = command1.left - 200

endif

Aussi j'aurais une 2ième question, quelle est la différence entre prendre le keydown de la form, ou le keydown de la command ?

Merci à l'avance pour vos réponses ;)

4 réponses

jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
21 oct. 2007 à 11:09
Bonjour,

Celà a déjà été dit et redit (par moi, entre autres) :

Quelle que soit la valeur donnée à la propriété KeyPreview de la Form :

La pression des flêches est interceptée par des contrôles prioritaires (parmi lesquels les boutons de commande).

Il faut donc :
- soit associer la pression des touches de flêches directionnelles à la touche ALT ou MAJ (par exemple)
- soit utiliser un mécanisme que j'ai exposé il y a quelque temps : inhibition temporaire des contrôles prioritaires (et rétablissement ensuite).
- soit substituer des pictureboxes ou des labels à tes boutons de commande (à condition que tu n'aies pas d'autres contrôle "prioritaires"

La 2ème méthode me parait la moins maladroite...
Une petite recherche et tu verras  l'exposé d'un tel mécanisme
3
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
22 oct. 2007 à 08:37
L'évènement d'un controle est par définition l'évènement subi par ce seul contrôle, quel que soit l'évènement considéré.

L'évènement d'une Form ne concerne que la Firm elle même. Si la propriété Keypreview de la Form est définie à True, la Form subie tous les évènements claviers (keydown, Keypress et Keyup) avant tous les contrôles qu'elle contient, sauf en cas de présence de contrôles non inhibés et prioritaires (un bouton de commende est dans ce cas), cas dans lequel la Form se voit "voler" toute possibilité de reconnaitre les évènements de clavier correspondant à la pression de certaines touches, telles les touches directionnelles et TAB.
3
Malixxx13
Messages postés
6
Date d'inscription
dimanche 11 mai 2003
Statut
Membre
Dernière intervention
24 octobre 2007

21 oct. 2007 à 21:12
Merci de ton aide, je sais que le sujet a été traité mais je n'ai rien trouvé en fouillant !

J'Avais essayé avec des picturebox et des label et sa ne marchait pas plus... encore une fois merci de ton aide.. et pour ma 2ième question, quelle est la différence entre le keydown de la form et le keydown par exemple d'un command ou d'un text... ??

Merci
0
Malixxx13
Messages postés
6
Date d'inscription
dimanche 11 mai 2003
Statut
Membre
Dernière intervention
24 octobre 2007

24 oct. 2007 à 05:16
D'accord merci beaucoup pour ton aide ;)
0