groupe de contrôles bouton

Le
Pascal
bien le bonjour,
sur une Form, j'ai un groupe de 10 contrôles bouton cmdChiffre(1) .(10)
chaque fois que ce bouton est "cliqué", il s'illumine pour le visuel de
l'utilisateur

je cherche à pouvoir me déplacer parmis ces boutons, au moyen des touches
vbkeyadd
et vbkeysubtract (touche moins et plus)
ceci dans la sub >> Private Sub Form_KeyDown(KeyCode As Integer, Shift
As Integer) <<

Le problème est que je ne sais comment récupérer l'index puisque je ne suis
pas forcement dessus
Je crois que je m'emmêle un peu les pinceaux!
merci comme à chaque fois de vos idées

Pascal
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jean-marc
Le #15391511
"Pascal" news:
bien le bonjour,
sur une Form, j'ai un groupe de 10 contrôles bouton cmdChiffre(1)
....(10)
chaque fois que ce bouton est "cliqué", il s'illumine pour le visuel de
l'utilisateur

je cherche à pouvoir me déplacer parmis ces boutons, au moyen des touches
vbkeyadd
et vbkeysubtract (touche moins et plus)
ceci dans la sub >> Private Sub Form_KeyDown(KeyCode As Integer, Shift
As Integer) <<

Le problème est que je ne sais comment récupérer l'index puisque je ne
suis pas forcement dessus
Je crois que je m'emmêle un peu les pinceaux!
merci comme à chaque fois de vos idées

Pascal



Hello,

C'est tout simple :-)

Il faut que ta forme est la propriété keyPreview à TRUE.
Puis il te faut une variable globale pour garder l'index
du dernier bouton qui a eu le focus, soit par action sur
les touches +/-, soitpar clic.

Puis ce code tout simple suffit.
Dans mon exemple, les boutons indexés s'appellent Command1.


' variable globale à la forme
Dim cur_cmd_index As Integer


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

If (KeyCode = vbKeyAdd) Or (KeyCode = vbKeySubtract) Then
If KeyCode = vbKeyAdd Then
cur_cmd_index = cur_cmd_index + 1
If cur_cmd_index > 10 Then
cur_cmd_index = 1
End If
ElseIf KeyCode = vbKeySubtract Then
cur_cmd_index = cur_cmd_index - 1
If cur_cmd_index = 0 Then
cur_cmd_index = 10
End If
End If
Command1(cur_cmd_index).SetFocus
End If
End Sub

Private Sub Command1_Click(Index As Integer)
cur_cmd_index = Index
End Sub

' juste pour initialiser la variable globale.
Private Sub Form_Load()

cur_cmd_index = 1
End Sub

Le tout testé et fonctionnel!

Et voila :-)

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Pascal
Le #15391501
hello jean-Marc,
Encore une fois ....toi et t'en remercie
Effectivement d'une simplicité déconcertante (l'utilisation de la variable)
j'aurai pû y penser mais bon!

Merci encore pour ton aide plus que précieuse

Pascal


"jean-marc" 47285197$0$22305$

"Pascal" news:
bien le bonjour,
sur une Form, j'ai un groupe de 10 contrôles bouton cmdChiffre(1)
....(10)
chaque fois que ce bouton est "cliqué", il s'illumine pour le visuel de
l'utilisateur

je cherche à pouvoir me déplacer parmis ces boutons, au moyen des
touches vbkeyadd
et vbkeysubtract (touche moins et plus)
ceci dans la sub >> Private Sub Form_KeyDown(KeyCode As Integer,
Shift As Integer) <<

Le problème est que je ne sais comment récupérer l'index puisque je ne
suis pas forcement dessus
Je crois que je m'emmêle un peu les pinceaux!
merci comme à chaque fois de vos idées

Pascal



Hello,

C'est tout simple :-)

Il faut que ta forme est la propriété keyPreview à TRUE.
Puis il te faut une variable globale pour garder l'index
du dernier bouton qui a eu le focus, soit par action sur
les touches +/-, soitpar clic.

Puis ce code tout simple suffit.
Dans mon exemple, les boutons indexés s'appellent Command1.


' variable globale à la forme
Dim cur_cmd_index As Integer


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

If (KeyCode = vbKeyAdd) Or (KeyCode = vbKeySubtract) Then
If KeyCode = vbKeyAdd Then
cur_cmd_index = cur_cmd_index + 1
If cur_cmd_index > 10 Then
cur_cmd_index = 1
End If
ElseIf KeyCode = vbKeySubtract Then
cur_cmd_index = cur_cmd_index - 1
If cur_cmd_index = 0 Then
cur_cmd_index = 10
End If
End If
Command1(cur_cmd_index).SetFocus
End If
End Sub

Private Sub Command1_Click(Index As Integer)
cur_cmd_index = Index
End Sub

' juste pour initialiser la variable globale.
Private Sub Form_Load()

cur_cmd_index = 1
End Sub

Le tout testé et fonctionnel!

Et voila :-)

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;








jean-marc
Le #15391491
"Pascal" news:
hello jean-Marc,
Encore une fois ....toi et t'en remercie
Effectivement d'une simplicité déconcertante (l'utilisation de la
variable)
j'aurai pû y penser mais bon!

Merci encore pour ton aide plus que précieuse

Pascal




Merci à toi pour le retour, ça fait toujours plaisir!

Bonne journée :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;




Publicité
Poster une réponse
Anonyme