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 7666 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 7666 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
Rejoignez-nous