IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Fleches directionnelles avec optionlist


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Par défaut Fleches directionnelles avec optionlist
    Bonjour à tous,

    Je souhaiterai indiquer à mon programme que lorsque l'utilisateur appuie sur la flèche du haut ou du bas que cela fasse descendre la ligne de sélection dans une FlexGrid.

    Cela fonctionne bien lorsque je suis dans une TextBox mais pas lorsque que je suis dans un groupe de boutons Option. En fait mon évènement ou je vérifie si c'est la touche vbkeyup/vbkeydown est ignoré D'ailleurs je rencontre le meme problème lorsque je suis dans une combobox.

    L'évènement intégré au composant lui meme (flèche du bas sur une combo engendre de de passer à l'élément suivant) ne peut il pas être "bloqué" ?

    Merci d'avance.


    Sébastien

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Désolé mais je ne comprends pas ce que tu veux.
    Tu veux pouvoir utiliser les fleches ou bloquer l'utilisation des fleches et sur quels controles ? Tu parles de bouton radio, de FlexGrid, de zone text et de combo !

    Il y a éventuellement la possibilité de mettre la propriété KeyPreview de ta feuille à True et d'intercepter l'appui des touches à ce niveau, tu regardes alors quel controle a le focus et tu agis en conséquence.

  3. #3
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    tu mélanges tout et on ne comprend rien à ce que tu veux faire !

    Merci de vous exprimer CLAIREMENT pour exposer votre problème, on n'est pas ici pour jouer aux devinettes !!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Par défaut
    En gros je veux pouvoir utiliser les flèches directionnelles pour faire monter ou descendre le curseur dans la FlexGrid et ce avec tout composant de ma Form.

    Avec une textbox, j'y arrive pas de souci mais en revanche avec une combo ou une optionlist je ne peux pas...

    Est ce plus clair ?

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Tu doit mettre les tests dans les événement KeyUp ou KeyDown
    Exemple pour un flexGrid
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
        Select Case KeyCode
        Case vbKeyUp
            If MSFlexGrid1.Row > MSFlexGrid1.FixedRows + 1 Then
                MSFlexGrid1.Row = MSFlexGrid1.Row - 1
            End If
        Case vbKeyDown
            If MSFlexGrid1.Row < MSFlexGrid1.Rows - 2 Then
                MSFlexGrid1.Row = MSFlexGrid1.Row + 1
            End If
        End Select
    End Sub
    Voila, j'espere que c'est ça que tu voulais.
    A+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Par défaut
    Hello,

    Merci pour ta réponse mais en fait j'avais réussit à faire ce que tu as mis sur la flexgrid.


    Le problème que je rencontre est sur le composant optionlist lorsque le focus est dessus. Si j'appuie sur la flèche du haut ou du bas, je passe de mon optionlist(0) à optionlist(1) par exemple...

    Alors que j'ai bien défini comme sur la grid, si vbkeyup=>grd.row=grd.row+1

  7. #7
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Il faudrait un raccourci ou une icone pour taper la phrase suivante, tellement on la tape souvent :


    Tu peux nous montrer ton code EXACT ?

    Et tu veux quoi exactement à part bien sûr nous faire tourner en bourrique ? Tu veux que quand tes boutons options ont le focus ce soit quand meme surle flexgrid que ça agisse ? Tu peux nous faire une epxlication claire et détaillée rien qu'un fois stp ?

  8. #8
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    La touche standard sous Windows pour passer d'un contrôle au suivant est la touche TAB !!!!!!

    Tout utilisateur d'un logiciel sous Windows doit savoir ça

    Alors pourquoi vouloir réinventer la roue ?!?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 5
    Par défaut
    Désolé je pensais avoir fait passer mon message et je ne cherche qu'à trouver une solution à mon problème... Merci de m'avoir répondu.

    Dans ma form, j'ai : Une MSFlexGrid, un groupe de controle avec des option button...

    Lorsque je suis sur mon groupe d'option button, je veux pouvoir faire varier la ligne sélectionnée dans ma Grid (grace aux fleches haut et bas du clavier) et non passer d'un option button à un autre du groupe de contole.

    C'est la qu'est le problème... puisque VB considère que les flèches haut/bas ont pour action de passer d'un élément à un autre du groupe.

    Je sais très bien que TAB fait passer d'un composant à un autre et je ne cherche pas à réinventer la roue qui tourne.

    En fait il faudrait pouvoir interdire les propriétés par défaut (j'entends par propriétés par défaut: le fait de passer d'un option button à un autre) pour que mon code (variation de la ligne sélectionnée dans la grid) puisse etre pris en compte

    J'espère sincèrement avoir été bcp plus clair, merci d'avance

  10. #10
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    Si qqun avait compris dans tes premiers posts ce que tu viens d'expliquer dans le dernier, je lui offre 1 an d'abonnement gratuit à dvp.com

    Tu vas te heurter à un conflit de touches par défaut et ce que tu voudrais faire

    Essaie, en définissant la propriété Keypreview de ta form = true, de gérer dans l'évènement Form_Keydown, le déplacement dans ta grid

    sans garantie de résultat ...

  11. #11
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Pour l'abonnement gratuit, merdum, je vais devoir repasser
    Pour le KeyPreview de la Form, y'avait rien à gagner ? parce que là j'avais mes chances !

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    La propriété KeyPreview n'y changera rien car les touches Tab, flêches directionnelles et Enter seules ne seront pas reconnues si se trouvent présents certains contrôles, tels des commandButtons, etc..., dont les OptionButtons (Windows et VB "intercepteront" bien évidemment avant et en feront "à leur tête"...)

    Ce jeu là n'est possible qu'à la condition de jouer avec une combinaison de touches, telles les combinaisons MAJ + Flêche_machin ou ALT + flêche_machin (et en jouant avec un événement reconnaissant ces combinaisons , tel l'événement KeyUp, par exemple)

    Bonne continuation...

  13. #13
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 122
    Par défaut
    Citation Envoyé par sebast1
    Lorsque je suis sur mon groupe d'option button, je veux pouvoir faire varier la ligne sélectionnée dans ma Grid (grace aux fleches haut et bas du clavier) et non passer d'un option button à un autre
    Pour un groupe d'options (idem pour des CheckBoxs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
    Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Long) As Integer
    Private Sub Option1_Validate(Index As Integer, Cancel As Boolean)
    'quelle touche ?
    If GetAsyncKeyState(vbKeyDown) <> 0 Then
     Cancel = True
     If MSFlexGrid1.Row < MSFlexGrid1.Rows - 1 Then
      MSFlexGrid1.Row = MSFlexGrid1.Row + 1
      MSFlexGrid1.TopRow = MSFlexGrid1.Row
     End If
    End If
    If GetAsyncKeyState(vbKeyUp) <> 0 Then
     Cancel = True
     If MSFlexGrid1.Row > MSFlexGrid1.FixedRows Then
      MSFlexGrid1.Row = MSFlexGrid1.Row - 1
      MSFlexGrid1.TopRow = MSFlexGrid1.Row
     End If
    End If
    End Sub
    Une ListBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyDown Then
     KeyCode = 0
     If MSFlexGrid1.Row < MSFlexGrid1.Rows - 1 Then
      MSFlexGrid1.Row = MSFlexGrid1.Row + 1
      MSFlexGrid1.TopRow = MSFlexGrid1.Row
     End If
    End If
    If KeyCode = vbKeyUp Then
     KeyCode = 0
     If MSFlexGrid1.Row > MSFlexGrid1.FixedRows Then
      MSFlexGrid1.Row = MSFlexGrid1.Row - 1
      MSFlexGrid1.TopRow = MSFlexGrid1.Row
     End If
    End If
    End Sub
    Un ComboBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyDown Then
     KeyCode = 0
     If MSFlexGrid1.Row < MSFlexGrid1.Rows - 1 Then
      MSFlexGrid1.Row = MSFlexGrid1.Row + 1
      MSFlexGrid1.TopRow = MSFlexGrid1.Row
     End If
    End If
    If KeyCode = vbKeyUp Then
     KeyCode = 0
     If MSFlexGrid1.Row > MSFlexGrid1.FixedRows Then
      MSFlexGrid1.Row = MSFlexGrid1.Row - 1
      MSFlexGrid1.TopRow = MSFlexGrid1.Row
     End If
    End If
    End Sub
    Je pense qu'il doit être possible de faire la même chose pour d'autres contrôles ....
    Citation Envoyé par ThierryAIM
    je lui offre 1 an d'abonnement gratuit à dvp.com

    A+
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Modifier une Roi avec fleches directionnelles
    Par rhand dans le forum Images
    Réponses: 2
    Dernier message: 21/02/2015, 02h02
  2. Réponses: 2
    Dernier message: 04/06/2008, 23h02
  3. parcourir les Jmenu avec les fleches directions avec [alt]
    Par mortalius dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 07/04/2006, 16h04
  4. Fleches directionnelles, structure termios
    Par red210 dans le forum C
    Réponses: 2
    Dernier message: 30/11/2005, 15h48
  5. utiliser les fleche directionnel
    Par darkmalak01 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/09/2005, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo