Déplacement par flèches

drussdegilead Messages postés 4 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 août 2006 - 25 août 2006 à 11:33
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 26 août 2006 à 00:52
Bonjour,

J'ai fais une grille style mots croisé, les cases change de couleur aléatoirement afin d'avoir des cases noires, je voudrais lorsque je me déplace dans la grille avec les touches fléché, sauter d'une case a chaque fois que je rentre dans une case noire, voici mon code pour le déplacement vers la droite (99 car j'ai 100 cases) :
If KeyCode = vbKeyRight And Index < 99 Then objCase(Index + 1).SetFocus: Exit Sub

et voici le code pour éviter d'atterir sur une case noire par clic de souris dans la grille :If objCase(Index).BackColor <gras>RGB(0, 0, 0) Then If Index 99 Then objCase(Index - 1).SetFocus Else objCase(Index + 1).SetFocus: Exit Sub</gras>

Merci de m'aider, cela fonctionne quand je clique, ça passe sur l'objet suivant, mais je trouve pas comment lorsque je déplace le focus par les touches

Ragus

6 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 août 2006 à 11:48
Salut,


Dans quels événements as tu placer ces codes
Je ne vois pas trop ou est ton  souci.








@+, Julien
0
drussdegilead Messages postés 4 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 août 2006
25 août 2006 à 13:06
En fait pour eviter que le curseur se positionne sur une case noire, le deuxième code fonctionne lorsque je clique sur une case noire.
Par contre lorsque je me déplace avec les touches fléchés je peut atterir sur une case noire, je voudrais l'éviter, le 1er code n'est qu'e le code de déplacement pour la touche droite, c'est là que je voudrais insérer une impossibilité d'atterir sur une case noire, mais je ne sais pas comment faire.
Voici le code entier pour les déplacements :

Private Sub objCase_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
'************* déplacement par les touches fléché ****************
If KeyCode = vbKeyRight And Index < 99 Then objCase(Index + 1).SetFocus: Exit Sub
If KeyCode = vbKeyLeft And Index > 1 Then objCase(Index - 1).SetFocus: Exit Sub
If KeyCode = vbKeyUp And Index > 11 Then objCase(Index - 10).SetFocus: Exit Sub
If KeyCode = vbKeyUp And Index < 11 Then objCase(Index + 90).SetFocus: Exit Sub
If KeyCode = vbKeyDown And Index < 90 Then objCase(Index + 10).SetFocus: Exit Sub
If KeyCode = vbKeyDown And Index > 90 Then objCase(Index - 90).SetFocus: Exit Sub
End Sub

Ragus
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 août 2006 à 13:46
Salut,


Dans ce cas il faut que tu teste la couleur de la case avant de faire le SetFocus.


Du style
If KeyCode = vbKeyRight And Index < 99 AndobjCase(Index + 1).BackColor <> RGB(0, 0, 0) Then objCase(Index + 1).SetFocus: Exit Sub

Le seul truc c'est si c'est une case noire tu décide de faire quoi?






@+, Julien
0
drussdegilead Messages postés 4 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 août 2006
25 août 2006 à 17:03
Salut,


Merci, en fait ton code fonctionne, si c'est une case noire, le focus n'y accède pas, mais il faudrait qu'il <saute> par dessus cette case pour arriver sur la prochaine, mais si c'est aussi une case noire, ça fonctionnera pas, a moins de faire plein de test qui se suivent.
En fait je voudrais qu'elle passe a la case suivante jusqu'a arriver sur une blanche, j'y arrive pas






Ragus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
26 août 2006 à 00:13
salut,
tu t'y prends à l'envers.
il ne faut pas aller d'un en un jusqu'à tombee sur une libre puisque tu peux très bien ne pas en avoir (noire en bordure) mais calculer le prochain index dispo sur la ligne selon la direction puis t'y déplacer si cet index existe.

fonction récursive?
while?
au choix...

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 août 2006 à 00:52
Bonsoir
En plus , avec :
If KeyCode = vbKeyRight And Index < 99 Then objCase(Index + 1).SetFocus: Exit Sub
Il quitte  toujours après le premier test
Il faut un End If pour qu' il passe au suivant si le test est Faux.
0
Rejoignez-nous