Problème placement/Utilisation flèches

Résolu
mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 - 28 oct. 2007 à 14:48
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 29 oct. 2007 à 10:19
Bonjour,

Je suis entrain de faire un programme qui utilise les flèches pour se déplacer sur des option button notamment.
J'ai 10 option button, quand j'appuie sur la flèche droite, la sélection se déplace, quand on arrive à la 10ème, ça passe sur la première, tout va bien, de même que le déplacement vers la gauche.
J'ai programmé les déplacements sur
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

Cependant, dès que je clicke sur un bouton, les commandes marchent moins bien.
je fais un setfocus sur le dernier optionbutton sur lequel j'étais pour dire au programme de se refocaliser dessus, et non sur le bouton, ça ça va, puis je réutilise les flèches, tout va bien jusqu'à ce que je sorte de mon 10ème bouton vers la droite, ou de mon premier bouton (vers la gauche).
si on sort vers la gauche, il faut appuyer sur la flèche gauche 3 fois pour que mon curseur veuille bien se placer sur le 10ème option button, mais ensuite, tout redevient normal.
De même, après avoir appuyé sur le bouton, si je sors vers la droite, il me faut appuyer 2 fois pour que le curseur passe sur le 1er option button....

Si quelqu'un comprend d'ôù vient le problème et a une solution, merci de m'en faire part :)

Je mets une partie du code ici:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
    Case 37 'Gauche
            If NumeroPion = 1 Then
                NumeroPion = 10            
            Else
                NumeroPion = NumeroPion - 1
            End If
            Place_SelectionPion 'Met le curseur à la bonne position
    Case 39 'Droite
            If NumeroPion = 10 Then
                NumeroPion = 1            
            Else
                NumeroPion = NumeroPion + 1
            End If
            Place_SelectionPion 'Met le curseur à la bonne position
End Sub

Private Sub Bt_Valider_Click()  'Pour l'instant, ne fait rien...
Bt_NumeroPion(NumeroPion).SetFocus  'Se focuse encore sur le dernier pion, sinon quand on bouge, on repasse direct au premier, après avoir cliqué sur un bouton
End Sub

Merci beaucoup

2 réponses

mstarsup5 Messages postés 527 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 10 octobre 2013 1
28 oct. 2007 à 16:04
Je viens de trouver, il faut faire un setfocus sur le bt_numeropion (option button) dernièrement sélectionné pour que notre curseur retourne dessus, et un setfocus sur le dessin dessière juste après pour ne pas passer par d'autres boutons de la form en utilisant les flèches...


En fait, les boutons flèches sont utilisés à la fois par mon rogramme, comme je les ai programmés, mais sont aussi utilisés par le programme interne de VB6 ou Windows, pour passer, par exemple, d'un bouton à un autre... et cela a priorité sur mon code, donc il faut empêcher cela en "coinçant" la sélection sur un dessin.

(C'est la conclusion à laquelle je suis arrivé, il se peut que ça soit faux, mais je ne vois pas ce que ça pourrait être d'autre étant donné que ma solution marche...)
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 oct. 2007 à 10:19
salut,

ta "solution/asctuce" est plus ou moin bonne en effet

plus précisément le TabIndex te permet de gérer l'ordre de focus.
seulement les optionbuttons, même s'il n'y a pas de groupe de contrôles, sont considérées comme un seule control.

c'est à dire qu'en mettant 100 optionsbuttons et une txtbox, appuyer sur TAB va jongler en le premièr optionbutton et la textbox.
tu pourras donc tricher en donnant le focus sur une picturebox cachée par exemple (cachée = posée en -50 * -50, pas invisible!)

reste à voir si ce micmac en vaut la chandelle, parce que le changement de focus par les flèches est déjà géré SANS aucun code

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Rejoignez-nous