Touche et vb6 [Résolu]

Messages postés
4
Date d'inscription
dimanche 10 décembre 2000
Dernière intervention
22 mai 2008
- - Dernière réponse : neotechno69
Messages postés
4
Date d'inscription
dimanche 10 décembre 2000
Dernière intervention
22 mai 2008
- 22 mai 2008 à 17:23
Bonjour a tous, voila j ai une petite question:

 jaimerai effectuer une operation ( ici un bete label.caption pour
l exemple)   lorsque une touche est enfoncée,donc juste apres
que l on appuie dessu et que l operation s'arrete lorsque la touche n
est plus pressée.


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

 'quand on presse sur la touche

Select Case KeyCode


    Case vbKeyQ

        Label5.Caption = "touche Q enfoncée."

    Case vbKeyZ

        Label6.Caption = "touche Z enfoncée"

    Case vbKeyS

        Label7.Caption = "touche S enfoncée"

    Case vbKeyD

        Label8.Caption "touche D enfoncée"> voila j arrive a f aire lorsqu'on appuie, mais pas quand la touche reste enfoncée.


Merci d avance :)

vive la prog
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
3
Merci
Salut
Et non, je ne pense pas que tu puisses le détecter.
KeyUp ne se déclenche qu'à la disparition, logique.
Tu peux créer autant de variable dans ton programme que de Touche, mettre à True lors du KeyDown et à False lors du KeyUp, et afficher l'état de ces touches dans ton Label grace à un Timer

Je pense qu'il va falloir t'inspirer des "keylogger" ou "keyploger" que tu trouveras parmi les sources.
Là, cycliquement avec un Timer, tu vas interroger l'état de chaque touche.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
500
Date d'inscription
jeudi 5 avril 2007
Dernière intervention
2 juillet 2012
3
Merci
si j'ai bien compris, ajoute ca
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode


    Case vbKeyQ
        Label1.Caption = ""
    Case vbKeyZ
        Label2.Caption = ""
    Case vbKeyS
        Label3.Caption = ""
    Case vbKeyD
        Label4.Caption = ""
    End Select




End Sub

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_lermite222
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
3
Merci
Re
Oui, à la limite, si ce n'est que pour afficher quelle touche est appuyée.
Pas besoin de "Select Case" : un seul   Label3.Caption = ""  suffira - à toi de voir si l'effacement de ce Label peut aussi intervenir lors du retrait du doigt d'une autre touche non listée.
Mais je pense que ton but n'est pas d'afficher des textes ...
Donc, tu voudras surement tester quelle touche est actuellement appuyée, et ce, autre part dans ton programme, non ?

Exemple :
Dans la partie déclaration de ta forme :
   Dim maTouche As Integer
Dans ton KeyDown :
   Select Case KeyCode
      Case vbKeyQ, vbKeyZ, vbKeyS, vbKeyD
         maTouche = KeyCode
      Case Else
         maTouche = 0
   End Select
Dans ton KeyUp :
   maTouche = 0
Dans ton programme, quelque part où tu as besoin de savoir quelle touche est actuellement appuyée :
   If maTouche = vbKeyQ Then ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
4
Date d'inscription
dimanche 10 décembre 2000
Dernière intervention
22 mai 2008
3
Merci
Merci a vous de vos réponse, j'ai trouvé la solution pour mon problème grâce a vous.Enfaite je me suis rendu conte que je devais faire un événement quand j appuyai sur la touche, et faire cet événement inverse quand je relâchai la touche.Par exemple
afficher la touche "z" est enfoncée, puis quand la touche remonte afficher "". et ceci fonctionne pour mon programme( j ouvre et je ferme une sortie d une carte d interface).

Private Sub form_Keydown(KeyCode As Integer, Shift As Integer)
'quand on presse sur la touche
Select Case KeyCode

Case vbKeyQ
Label5.Caption = "touche Q enfoncée"
SetIOchannel (1)

Case vbKeyZ
Label6.Caption = "touche Z enfoncée"
SetIOchannel (2)
Case vbKeyS
Label7.Caption = "touche S enfoncée"
SetIOchannel (3)
Case vbKeyD
Label8.Caption = "touche D enfoncée"
SetIOchannel (4)


End Select
End Sub

Private Sub form_KeyUp(KeyCode As Integer, Shift As Integer)
'quand la touche remonte
Select Case KeyCode

Case vbKeyQ

ClearIOchannel (1)
Label5.Caption = ""

Case vbKeyZ
ClearIOchannel (2)
Label6.Caption = ""
Case vbKeyS
ClearIOchannel (3)
Label7.Caption = ""
Case vbKeyD
ClearIOchannel (4)
Label8.Caption = ""

End Select
End Sub


Donc on peut fermer ce sujet, et merci grâce a vos idées je suis parvenu exactement a faire ce que je voulais.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de neotechno69
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Dernière intervention
9 avril 2017
0
Merci
Salut,

Utilise tout simplement l'événement KeyUp.

__________
  Kenji
Commenter la réponse de Charles Racaud
Messages postés
4
Date d'inscription
dimanche 10 décembre 2000
Dernière intervention
22 mai 2008
0
Merci
Ok merci beaucoup pour vos reponse, je vais m inspirer des kéylogger :)

vive la prog
Commenter la réponse de neotechno69
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
PS : Pour que ta forme continue à 'voir' les touches avant les composants qui sont dessus (boutons, list ...), pense à mettre la propriété KeyPreview de ta forme à True

Pour facilité la recherche d'autres membres qui rechercheraient la même info, merci de valider (avec le bouton Réponse acceptée) la ou les réponses qui te semblent correctes et t'ont aidées.
Commenter la réponse de cs_Jack

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.