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 :

Question vb6: le keydown


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut Question vb6: le keydown
    Bonjour

    Je voudais pouvoir réaliser une action au moyen d'une combinaison de touche: +1, +2 donc seulement et seulement si l'usager appuie sur la touche + la laisse enfoncé et appuie ensuite sur la touche 1 ou 2, meme chose pour le - c'est pour une fonction de zoom out et in

    mais la variable shift ne prend en compte que les touche shift et alt je crois ?

    merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Shift... oui et Shift plus + ça donne +, et + c'est chr(43), tu ne peux pas tester KeyCode ?

    A+

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Oui, parce que s'il laisse + enfoncé, il aura plusieurs fois +...
    Tu peux essayer ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
          If KeyAscii = 43 Then Positif = True
    TextBox4.Text = ""
    End Sub
    A+

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 309
    Par défaut
    voici ce que j'ai fait:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    dans un module: public iKeyBuffer as integer
     
    Private Sub Form_KeyPress(KeyAscii As Integer)
     
        If iKeyBuffer <> 0 Then KeyAscii = 0
     
    End Sub
     
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
     
        If KeyCode = vbKeyAdd Or KeyCode = vbKeySubtract Then
     
            iKeyBuffer = 0
     
        End If
     
    End Sub
     
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
     
        If KeyCode = vbKeyAdd Or KeyCode = vbKeySubtract Then
     
            iKeyBuffer = KeyCode
     
        End If
     
        Select Case KeyCode
     
            Case vbKeyNumpad1
     
                Select Case iKeyBuffer
     
                    Case vbKeyAdd
     
                        Imgx(0).Zoom = Imgx(0).Zoom + 0.01
     
                    Case vbKeySubtract
     
                        Imgx(0).Zoom = Imgx(0).Zoom - 0.01
     
                End Select
     
            Case vbKeyNumpad2
     
                Select Case iKeyBuffer
     
                    Case vbKeyAdd
     
                        Imgx(2).Zoom = Imgx(2).Zoom + 0.01
     
                    Case vbKeySubtract
     
                        Imgx(2).Zoom = Imgx(2).Zoom - 0.01
     
                End Select
     
        End Select
     
    End Sub
    ça fonctionne très bien, sauf que je me demandais si vb avait une façon pour gérer la combinaison de touche autre que shift ou alt. Dans ce cas-ci la touche + et - combiné à 1 et 2

    au lieu de mettre ça dans un buffer, etc.

    Le seul problème que j'ai ici c'est si l'usager veux utiliser la touche + tout seul, sans combinaison, il ne peut pas.

  5. #5
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    ouskel'n'or t'a donné une bonne piste. Mais n'oublie pas que le code n'est pas complet... faut l'adapter. Exemple:

    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 TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 
        If KeyAscii = 43 Then 
            Positif = True 
            KeyAscii = chr(0) ' pour ne pas vider le textbox inutilement 
          ElseIf Positif then
            Select Case KeyAscii
              Case "1"
                'Code pour +1 en n'oubliant pas de remettre KeyAscii à zéro
              Case "2"
                'Code pour +2 en n'oubliant pas de remettre KeyAscii à zéro
              Case "3"
                'Code pour +3 en n'oubliant pas de remettre KeyAscii à zéro
            End Select
            Positif = False
        End If
    End Sub

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ben moi j'ai fait ça et ça marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        If KeyAscii = 43 Then Positif = True
        TextBox4.Text = ""
    End Sub
     
    Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If Shift Then Majuscule = True
    End Sub
     
    Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        MsgBox "Positif = " & Positif & " majuscule = " & Majuscule
    End Sub
    Bien sûr, j'ai déclaré Positif et Majuscule comme boolean en Public

    Tu regardes...

    A+

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bien sûr, si je devais corriger mes erreurs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 
        if KeyAscii = 43 then
           Positif = true
           TextBox4.Text = ""
        endif
    End Sub 
     
    Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
        if shift then Majuscule = true
    End Sub 
     
    Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
        MsgBox "Positif = " & Positif & " majuscule = " & Majuscule 
    End Sub
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6]Questions sur deux contrôles
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/05/2006, 20h06
  2. [VB6] Petite question avec "select case ... end case"
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 04/05/2006, 10h24
  3. [VB6]Questions et problèmes sur OpenOffice
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 25/04/2006, 10h50
  4. [VB6] Une autre question : Ouverture d'un navigateur
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 28/02/2006, 13h34
  5. [VB6]Question bête sur les paramètres optionels
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/10/2005, 20h33

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