drussdegilead
Messages postés4Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 août 2006
-
25 août 2006 à 11:33
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 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
drussdegilead
Messages postés4Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 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
drussdegilead
Messages postés4Date d'inscriptionlundi 21 août 2006StatutMembreDernière intervention29 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13278Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 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.