MSflexgrid + keydown

cs_funseb Messages postés 154 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 28 janvier 2010 - 1 juil. 2004 à 11:42
cs_funseb Messages postés 154 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 28 janvier 2010 - 1 juil. 2004 à 16:48
salut tout le monde !!
j'ai un soucis, je n'arrive pas , sur une msflexgrid, a utiliser dans l'evenement keydown, le code if keycode 38 or keycode 40 then
...
end if

qui consiste a lancer une procedure si l'utilisateur monte ou descend dans la flexgrid avec les fleche haut et bas !!
si quelqu'un peut m'aider ca serait cool !!

merci d'avance

clac-clac

6 réponses

pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006
1 juil. 2004 à 14:40
Est ce que ton projet utilse des formes MDI?

jerem
cs_funseb Messages postés 154 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 28 janvier 2010 1
1 juil. 2004 à 14:48
non il n'utilise pas de MDI !!

en fait g testé en recevant dans une textbox le code keycode dans l'evenement keydown de ma msflexgrid et qd je tape entrer ou espace ... il me redonne bien la valeur mais par contre pour la fleche du haut et du bas , il entre meme pas dans l'evenement keydown !!!

je comprend pas !

clac-clac
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006
1 juil. 2004 à 14:58
J'ai eu exactement le meme probleme il y a 2 jours, sauf que mon projet utilsait du MDI et j'ai pu resoudre ca en mettant le focus sur la 'UserForm mere' et ainsi je pouvais utiliser les fleches sur la UserForm enfant.

Aussi, j'avais fait quelques test sur une form toute simple et les fleches ne marchaient plus des lors que j'y ajoutais des options button ou des command button, VB me prennait l'action par defaut, essaye de mettre ce code dans ta Form load:

KeyPreview = true

Combien d'autre control (Option button, command button, etc...) as tu sur ta form?
cs_funseb Messages postés 154 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 28 janvier 2010 1
1 juil. 2004 à 15:55
j'ai au moins 30 autres controle sur ma form !!

mais j'ai essayé pas mal de truc sans succès !!

je suis a cours d'idée

clac-clac

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

Posez votre question
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006
1 juil. 2004 à 16:18
Si il y a plein de controls sur ta Form, je pense que ca doit avoir un effet avec tes fleches de direction; essaye de placer un KeyPreview = true lorsque l'utilisateur click sur ton Grid.

Voici la doc decrivant son utlisation:

KeyPreview, propriété
      

Renvoie ou définit une valeur qui détermine si les événements du clavier pour les feuilles sont appelés avant ceux destinés aux contrôles. Les événements du clavier sont KeyDown, KeyUp et KeyPress.

Syntaxe

object.KeyPreview [= boolean]

La syntaxe de la propriété KeyPreview comprend les éléments suivants :

Élément Description 
object Expression d'objet qui prend la valeur d'un objet figurant dans la liste "Application". 
boolean Expression booléenne qui spécifie la façon dont les événements sont reçus, comme indiqué dans la section Valeurs. 

Valeurs

L'élément boolean peut prendre les valeurs suivantes :

Valeur Description 
True La feuille reçoit les événements du clavier avant le contrôle actif. 
False (Valeur par défaut) Le contrôle actif reçoit les événements du clavier, mais pas la feuille. 

Remarques

Vous pouvez utiliser la propriété KeyPreview pour créer une procédure de gestion du clavier destinée à une feuille. Par exemple, lorsqu'une application met en ouvre des touches de fonction, il est préférable de traiter les frappes de touches au niveau de la feuille, au lieu d'écrire un code pour chaque contrôle susceptible de recevoir les événements du clavier.

Si une feuille n'a pas de contrôles visibles et actifs, elle reçoit automatiquement tous les événements du clavier.

Pour gérer les événements du clavier au niveau de la feuille uniquement et empêcher que les contrôles reçoivent ces événements, affectez la valeur 0 à KeyAscii dans l'événement KeyPress de la feuille et à KeyCode dans l'événement KeyDown de la feuille.

Note   Certains contrôles interceptent les événements du clavier, de sorte que la feuille ne les reçoit pas. C'est le cas, par exemple, de la touche ENTRÉE lorsque le focus est sur un contrôle CommandButton, et des touches de direction lorsque le focus est sur un contrôle ListBox.



Sinon, j'avoue que je vois pas,

Bon courage, et si t'as reussi a resoudre ton probleme, ecris le sur ce forum pour les autres!

Jeremy
cs_funseb Messages postés 154 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 28 janvier 2010 1
1 juil. 2004 à 16:48
merci bien pinje mais ca marche pas avec keypreview!
j'ai finalement trouvé une alternative :
en fait l'utilisateur doit taper sur alt + la fleche.
voila le code : lstof est ma msflexgrid !

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

If Shift = 4 Then
If KeyCode = 38 Then
If lstof.Row > 1 Then
lstof.Row = lstof.Row - 1
SendKeys ("{RIGHT}")
lstof_Click
End If
Else
If KeyCode = 40 Then
If lstof.Row < lstof.Rows - 1 Then
lstof.Row = lstof.Row + 1
SendKeys ("{RIGHT}")
lstof_Click
End If
Else
If KeyCode = 33 Then
If lstof.Row - 10 > 1 Then
lstof.Row = lstof.Row - 15
Else
lstof.Row = 1
End If
SendKeys ("{RIGHT}")
lstof_Click
Else
If KeyCode = 34 Then
If lstof.Row + 10 < lstof.Rows - 1 Then
lstof.Row = lstof.Row + 15
Else
lstof.Row = lstof.Rows - 1
End If
SendKeys ("{RIGHT}")
lstof_Click
End If
End If
End If
End If
End If


End Sub

clac-clac
Rejoignez-nous