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

Langage Delphi Discussion :

Détecter combinaison de touches du clavier


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut Détecter combinaison de touches du clavier
    Comment detecter une combinaison des touches du clavier ?

    Par exemple Ctrl + ArrêtDefil ou encore Ctrl + Fin

    Merci de votre aide

  2. #2
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Tu dois le faire sous OnFormKeyDown, voilà, j'ai essayé et ça marche pour le CTRL+ END mais pas pour l'autre, apparemment c'est pas VK_SCROLL, je te laisse chercher pour celle là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if ((GetAsyncKeyState(VK_CONTROL) <> 0)) and (key = VK_END) then showmessage('CTRL + FIN');
      if ((GetAsyncKeyState(VK_CONTROL) <> 0)) and (key = VK_SCROLL) then showmessage('CTRL + ARRETDEFIL');
    end;
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut
    Merci

  4. #4
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Regarde aussi ce petit composant :

    http://nono40.developpez.com/sources/source0021.html
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  5. #5
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    J'etais justement en train d'en créé un suite à ça mais un peu moins complet que le tiens Nono
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Nono40
    Regarde aussi ce petit composant :

    http://nono40.developpez.com/sources/source0021.html


    J'arrive pas a l'installer avec Delphi7, comment faire ?

  7. #7
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut
    Ah non ... c bon ...

    Le composant s'est mis dans l'onglet Exemples ...

  8. #8
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut
    bon bah j'arrive pas à compiler mon projet ... il me sort :

    Fichier non trouvé : DesignEditors.dcu

  9. #9
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par lil_jam63
    Tu dois le faire sous OnFormKeyDown, voilà, j'ai essayé et ça marche pour le CTRL+ END mais pas pour l'autre, apparemment c'est pas VK_SCROLL, je te laisse chercher pour celle là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if ((GetAsyncKeyState(VK_CONTROL) <> 0)) and (key = VK_END) then showmessage('CTRL + FIN');
      if ((GetAsyncKeyState(VK_CONTROL) <> 0)) and (key = VK_SCROLL) then showmessage('CTRL + ARRETDEFIL');
    end;
    Je dois être maudis, mais j'ai fais exactement pareil ... mais il ne me detecte pas le CTR+END

  10. #10
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Essaye en rajoutant $8000, chez moi j'en ai pas besoin mais on sait jamais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ((GetAsyncKeyState(VK_CONTROL) <> 0 and $8000)) and (key = VK_END) then showmessage('CTRL + FIN');
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  11. #11
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut
    mon probleme ne vient pas plutot du focus ???

    Car a ce moment la le curseur est sur un TComboBox, peut être que ça "absorbe", les evenements du keyDown du form ?

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure Tnavig.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      showmessage('toto');
      if ((GetAsyncKeyState(VK_CONTROL) <> 0 and $8000)) and (key = VK_END) then
        begin
          quizzsettings.Show;
          showmessage('CTRL + FIN');
        end;
      if ((GetAsyncKeyState(VK_CONTROL) <> 0 and $8000)) and (key = VK_SCROLL) then showmessage('CTRL + ARRETDEFIL');
    end;
    Il ne m'affiche même pas 'toto' :

  12. #12
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    C'est normal, tu l'as mis sur le onKeyDown de la form, met sur le onKeyDown du Combobox et c'est bon, ou encore mieux, tu affectes le onKeyDown de ta form a celui du ComboBox, comme ça tu l'auras sur les deux (va dans l'inspecteur d'evenements, clique( une fois) sur le onKeyDown du comboBox et sur la petite fleche et tu choisi le onKeyDown qui t'es proposé.
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  13. #13
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut
    Ah ok !

    Sinon autre questions qui n'a rien a voir ...

    Comment on fait deja pour faire apparaitre une boite de dialogue avec du texte et un bouton OK et le petit triangle rouge comme image ?

    Un message d'erreur en gros

  14. #14
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox(0, 'Ton message', 'Titre de la fenêtre', MB_ICONERROR or MB_OK);
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  15. #15
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 129
    Points : 44
    Points
    44
    Par défaut
    merci

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

Discussions similaires

  1. [Python 3.X] Combinaison de touches du clavier - Tkinter
    Par xbp28 dans le forum Tkinter
    Réponses: 6
    Dernier message: 02/04/2015, 18h06
  2. Réponses: 1
    Dernier message: 25/02/2008, 12h55
  3. Réponses: 9
    Dernier message: 13/09/2007, 18h06
  4. [VCL] Comment détecter une combinaison de touches ?
    Par micatmidog dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2005, 14h19

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