Changement de focus avec fleche clavier

andalo Messages postés 102 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 20 octobre 2012 - 12 juin 2008 à 17:33
andalo Messages postés 102 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 20 octobre 2012 - 13 juin 2008 à 10:05
Bonjour a tous,
Apres recherche sur le web, je n'ai trouvé que des devellopeurs dans la meme situation sans solution!
j'ai un controle qui perd le focus quand j'utilise les fleches haut, bas, gauche, ou droite. C'est problematique car j'ai besoin de le faire reagir a ces touches claviers. Du coup je ne passe plus dans mon evenement keydown de mon controleY a t'il moyen de desactiver cette perte de focus??

2 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
12 juin 2008 à 18:26
Salut
Pas assez clair.
"J'ai un control" : quel type ?
"qui perd le focus" : Oui, c'est normal.
J'ai fait l'essai avec deux CommandButton : les flèches font passer d'un bouton à l'autre.
"j'ai besoin de le faire reagir" : "le" = qui ?

Donc, ta question est "comment détecter les flèches quand aucun control de saisie n'a le focus"
En effet, c'est un problème car le KeyPreview de la forme ne fonctionne pas puisque c'est Windows qui intercepte cet évènement pour gérer l'affichage.
2 solutions :
- Donner le focus à une TextBox (installé en dehors de l'affichage de la forme) par exemple avant de taper les flèches
- Faire un Hook de la forme afin de capturer tous les évènements avant que Windows ne s'en occupe.
  C'est une technique plus complexe.
  Tu trouveras des exemples en tapant "hook" dans la recherche des codes en excluant .NET

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

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
andalo Messages postés 102 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 20 octobre 2012
13 juin 2008 à 10:05
C'est un controle de type "map", il sert a afficher de l'information geographiques georeferencée, (exemple: image aerienne que l'on peut superposer avec des couches d'informations vecteur de type polygone representant des parcelles). Je voulais me servir des flêches pour deplacer l'emprise de la carte, la fleche "up" devant provoquer un deplacement vers le nord.
Merci pour les solutions proposées malgré mon manque de clarté!

Je suis un peu frileu pour le hook, j'avais déjà implanté un code de ce type(pour intercepter la molette de la souris) à une de mes applis mais je ne dois pas avoir le niveau necessaire pour le faire fonctionner correctement et ca plantais. La soluce textbox était interessante mais je pense avoir trouvé plus simple :
Ce n'est peut etre pas très propre mais ça fonctionne. En tout cas elle est hyper simple. Je gère les déplacements de ma carte (controle "map") dans l'evenement "lost_focus". Ce, en verifiant bien sur que une des quatres flêche du clavier est enfoncée. Si c'est le cas je redonne le focus au controle map apres avoir effectué le déplacement.
0
Rejoignez-nous