Clavier

Kail - 15 août 2001 à 08:41
 Makabey - 16 août 2001 à 00:54
Salut,
je voudrais faire une forme, et lorsque l'on appuie sur une touche du clavier ca dit laquelle (ds un label par exemple)

Merci, @+

:approve)

1 réponse

Met la propriété KeyPreview de ta Form à True et ajoute ceci:

Private Sub Form_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
    Case 10
      Label1 = "[Changement ligne]"
      
    Case 13
      Label1 = "[Retour charriot (Enter)]"
      
    Case 32
      Label1 = "[Espace]"
      
    Case 48 To 57   '0-9
      Label1 = Chr$(KeyAscii)
      
    Case 65 To 90, 97 To 122 'A-Z, a-z
      Label1 = Chr$(KeyAscii)
      
    Case Else
      Label1 = "[Char autre]"
  End Select
End Sub


Bien sûr, on peux faire mieux :)

OU si tu veux plus de précision:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Dim strTmp1 As String

  Select Case KeyCode
    Case 10
      strTmp1 = "[Changement ligne]"

    Case 13
      strTmp1 = "[Retour charriot (Enter)]"

'    Case 16
'      strTmp1 = "[Shift Seul]"  'Il faut taper une autre touche auparavent, Alt ou Ctrl
'
'    Case 17
'      strTmp1 = "[Ctrl Seul]"
'
'    Case 18
'      strTmp1 = "[Alt Seul]"
    
    Case 32
      strTmp1 = "[Espace]"

    Case 48 To 57   '0-9
      strTmp1 = Chr$(KeyCode)

    Case 65 To 90, 97 To 122 'A-Z, a-z
      strTmp1 = Chr$(KeyCode)

'    Case Else
'      strTmp1 = "[Char autre]"
  End Select

  If (LenB(strTmp1) > 0) Then
      If (Shift And vbShiftMask) Then
          strTmp1 = "[Shift]+" & strTmp1
        Else
          strTmp1 = Chr$(Asc(strTmp1) + 32)
      End If
      
      If (Shift And vbCtrlMask) Then
          strTmp1 = "[Ctrl]+" & strTmp1
        'Else
      End If
      
      If (Shift And vbAltMask) Then
          strTmp1 = "[Alt]+" & strTmp1
        'Else
      End If
    'Else
  End If
  
  Label1 = strTmp1
End Sub


C'est pas parfait, mais c'est bien >:)
0
Rejoignez-nous