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

C++Builder Discussion :

Trouver quelle touche a été pressé


Sujet :

C++Builder

  1. #1
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut Trouver quelle touche a été pressé
    Bonjour (la question risque d'être un peu bête ),

    Je travaille dans un StringGrid dans lequel je rentre différents coups de tennis. Une colonne de ce StringGrid sert à définir des touches de raccourci. Par exemple lorsque l'utilisateur entre le coup "Service", il défini la touche de raccourci "Flèche Haut" du clavier.... où une autre touche (a,v,c ...).
    Je travaille avec l'événement OnKeyDown afin de pouvoir utiliser toutes les touches du clavier.
    Voila le petit souci ...
    Je sais que la touche "p", en décimal correspond au 80. Peux-ton retouver, à partir du nombre la touche pressé?


    Merci

    EDIT :

    Je fais cela car dans le OnKeyPress, on ne peut pas récupérer la touche lorsque ce sont les flèches du clavier. Si vous avez une autre solution à me proposer, je prends
    Merci

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    J'ai fais une requette dans ce sens et DjmSoftware ma envoyee ceci tire de la FAQ
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    bonjour ci-joint les codes clés ds touches
    VK_LBUTTON Bouton gauche de la souris
    VK_RBUTTON Bouton droit de la souris
    VK_CANCEL Ctrl+Pause
    VK_MBUTTON Bouton central de la souris
    VK_BACK Touche Retour arrière
    VK_TAB Touche Tabulation
    VK_CLEAR Touche Effacer
    VK_RETURN Touche Entrée
    VK_SHIFT Touche Maj
    VK_CONTROL Touche Ctrl
    VK_MENU Touche Alt
    VK_PAUSE Touche Pause
    VK_CAPITAL Touche Verrouillage majuscule
    VK_KANA Utilisée avec l'IME
    VK_HANGUL Utilisée avec l'IME
    VK_JUNJA Utilisée avec l'IME
     
    VK_FINAL Utilisée avec l'IME
    VK_HANJA Utilisée avec l'IME
    VK_KANJI Utilisée avec l'IME
    VK_CONVERT Utilisée avec l'IME
    VK_NONCONVERT Utilisée avec l'IME
    VK_ACCEPT Utilisée avec l'IME
    VK_MODECHANGE Utilisée avec l'IME
    VK_ESCAPE Touche Echap
    VK_SPACE Barre d'espace
    VK_PRIOR Touche Page précédente
    VK_NEXT Touche Page suivante
    VK_END Touche Fin
    VK_HOME Touche Début
    VK_LEFT Touche flèche vers la gauche
    VK_UP Touche flèche vers le haut
    VK_RIGHT Touche flèche vers la droite
     
    VK_DOWN Touche flèche vers le bas
    VK_SELECT Touche de sélection
    VK_PRINT Touche Impression (spécifique au clavier)
    VK_EXECUTE Touche d'exécution
    VK_SNAPSHOT Touche Impression écran
    VK_INSERT Touche Insertion
    VK_DELETE Touche Suppression
    VK_HELP Touche d'aide
    VK_LWIN Touche gauche Windows (clavier Microsoft)
    VK_RWIN Touche droite Windows (clavier Microsoft)
    VK_APPS Touche Applications (clavier Microsoft)
    VK_NUMPAD0 Touche 0 (pavé numérique)
    VK_NUMPAD1 Touche 1 (pavé numérique)
     
    VK_NUMPAD2 Touche 2 (pavé numérique)
    VK_NUMPAD3 Touche 3 (pavé numérique)
    VK_NUMPAD4 Touche 4 (pavé numérique)
    VK_NUMPAD5 Touche 5 (pavé numérique)
    VK_NUMPAD6 Touche 6 (pavé numérique)
    VK_NUMPAD7 Touche 7 (pavé numérique)
    VK_NUMPAD8 Touche 8 (pavé numérique)
    VK_NUMPAD9 Touche 9 (pavé numérique)
    VK_MULTIPLY Touche Multiplication (pavé numérique)
    VK_ADD Touche Plus (pavé numérique)
    VK_SEPARATOR Touche Séparateur (pavé numérique)
    VK_SUBTRACT Touche Moins (pavé numérique)
     
    VK_DECIMAL Touche décimale (pavé numérique)
    VK_DIVIDE Touche Division (pavé numérique)
    VK_F1 Touche F1
    VK_F2 Touche F2
    VK_F3 Touche F3
    VK_F4 Touche F4
    VK_F5 Touche F5
    VK_F6 Touche F6
    VK_F7 Touche F7
    VK_F8 Touche F8
    VK_F9 Touche F9
    VK_F10 F10 key
    VK_F11 F11 key
    VK_F12 F12 key
    VK_F13 F13 key
    VK_F14 F14 key
    VK_F15 F15 key
    VK_F16 F16 key
    VK_F17 F17 key
    VK_F18 F18 key
    VK_F19 F19 key
    VK_F20 F20 key
    VK_F21 F21 key
    VK_F22 F22 key
    VK_F23 F23 key
     
    VK_F24 F24 key
    VK_NUMLOCK Touche Verr Num
    VK_SCROLL Touche Arrêt défilement
    VK_LSHIFT Touche Maj gauche (utilisée uniquement avec GetAsyncKeyState et GetKeyState)
    VK_RSHIFT Touche Maj droite (utilisée uniquement avec GetAsyncKeyState et GetKeyState)
    VK_LCONTROL Touche Ctrl gauche (utilisée uniquement avec GetAsyncKeyState et GetKeyState)
    VK_RCONTROL Touche Ctrl droite (utilisée uniquement avec GetAsyncKeyState et GetKeyState)
    VK_LMENU Touche Alt gauche (utilisée uniquement avec GetAsyncKeyState et GetKeyState)
     
    VK_RMENU Touche Alt droite (utilisée uniquement avec GetAsyncKeyState et GetKeyState)
    VK_PROCESSKEY Touche de processus
    VK_ATTN Touche Attn
    VK_CRSEL Touche CrSel
    VK_EXSEL Touche ExSel
    VK_EREOF Touche Erase EOF
    VK_PLAY Touche Lecture
    VK_ZOOM Touche Zoom
    VK_NONAME Réservée à un usage futur
    VK_PA1 Touche PA1
    VK_OEM_CLEAR Touche Effacer
    cordialement
    j'espere que ca fera ton bonheur
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  3. #3
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Oui, je connais tous cela! C'est d'ailleurs sur ce site que j'ai vu cela

    Apparemment l'explication de mon problème n'est pas assez clair.
    Un petit bout de code ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void __fastcall TFAjout_Coup::SGCoupKeyPress(TObject *Sender, char &Key)
    {
      if (Key == VK_LEFT)
      ShowMessage("Flèche Gauche");
      if (Key == VK_RETURN)
      ShowMessage("Touche entrée");
    }
    Ce code fonctionne avec la touche entrée mais pas avec la touche "Flèche Gauche"
    Donc je cherche à convertir le Word du OnKeyDown en Char pour récupérer la lettre qui correspond au nombre 80 (en locurence "p").
    Merci

  4. #4
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Bonjour
    Tu peut aussi utiliser la fonction GetKeyState();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     if((GetKeyState(0x50) & 0x8000))
       {
       ShowMessage("Touche P");
       Key = 0;
     }
    }
    A++
    .
    Why
    .
    //------------------

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Merci!

    Mais je vais pas l'utiliser car il me faudrait faire cela pour chaque lettre.
    Je chercher quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void __fastcall TFAjout_Coup::SGCoupKeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    char lettre;
    lettre=GetValueKey(Key);
    }
    Avec GetValueKey une fonction qui serait déjà existante comme GetKeyState.
    Dur dur, je cherche toujours mais je ne trouve pas (peut être que cela n'existe pas !)

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Tu peut utiliser ce code
    dans ton fichier.cpp
    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
     
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::onRBUTTONUP(TMessage& Msg)
    {
    //MessageBox(NULL, "appel WM_KEYDOWN", " form", MB_OK);
    {
     
    switch (Msg.WParam)
            {
    case VK_DOWN:
            {
            MessageBox(NULL, "TOUCHE FLECHE BAS APPUYEE", " form", MB_OK);
            break;
            }
    case VK_UP:
            {
            MessageBox(NULL, "TOUCHE FLECHE HAUT APPUYEE", " form", MB_OK);
            break;
            }
    case VK_LEFT:
            {
            MessageBox(NULL, "TOUCHE FLECHE GAUCHE APPUYEE", " form", MB_OK);
            break;
            }
    case VK_RIGHT:
            {
            MessageBox(NULL, "TOUCHE FLECHE DROITE APPUYEE", " form", MB_OK);
            break;
            }
    case VK_RETURN:
            {
            MessageBox(NULL, "TOUCHE ENTREE APPUYEE", " form", MB_OK);
            break;
            }
            }
    }
     
    }
    //---------------------------------------------------------
    dans fon fichier.h
    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
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
    private:	// User declarations
    public:		// User declarations
            __fastcall TForm1(TComponent* Owner);
     
            void __fastcall onRBUTTONUP(TMessage& Msg);
     
    BEGIN_MESSAGE_MAP
    // utiliser wm_keyup pour recuperer les touches sauf ALT
            MESSAGE_HANDLER(WM_KEYUP , TMessage, onRBUTTONUP)
    END_MESSAGE_MAP(TForm)
     
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Merci bien! Ta dernière réponse, pour mon niveau est trop complexe. Je pense avoir trouvé (en trichant avec le OnKeyUp).

    Je garde tout de même ta réponse pour une utilisation future lorsque j'aurai un niveau plus avancé.

    Merci encore et bonne soirée

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

Discussions similaires

  1. KeyStroke.getKeyStroke Savoir quelle touche est appuyée
    Par oOoOuuhmAn dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 08/06/2008, 19h48
  2. Réponses: 1
    Dernier message: 25/02/2008, 12h55
  3. Réponses: 4
    Dernier message: 08/09/2006, 11h02
  4. mettre la touche tab dans presse papier
    Par lassmust dans le forum Langage
    Réponses: 1
    Dernier message: 28/04/2006, 15h40
  5. Récupérer la touche du clavier pressée
    Par deubal dans le forum Débuter
    Réponses: 2
    Dernier message: 25/10/2005, 16h58

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