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

Composants VCL Delphi Discussion :

[VCL] Comment détecter une combinaison de touches ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Points : 71
    Points
    71
    Par défaut [VCL] Comment détecter une combinaison de touches ?
    Bonjour à tous !

    Je voudrais en fait mettre un easter egg dans mon programme... et pour l'activer, il faudrait faire dans la fenetre par exemple : d + e + v.

    Comme ceci plus précisément : d (on appuie puis on relache) + e (on appuie puis on relache) + v (on appuie puis on relache).

    Cette combinaison de touches ferait apparaître une autre fiche ( Form2.ShowModal; ).

    Comment puis-je m'y prendre svp ?

    Merci d'avance pour votre aide.

    Titre modifié.
    Merci de lire les règles du forum.

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Pour obtenir l'appui de touche en simultanné, les combinaisons, il faut enregistrer l'état de chaque touche dans un tableau de boolean.

    http://sub0.developpez.com/delphi/mouse.zip

    Si tu ne veux pas utiliser de timer :
    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
    Unit Unit1;
    Interface
    Uses Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs;
     
    Type
      TForm1 = Class(TForm)
        Procedure FormCreate(Sender: TObject);
        Procedure ProcMess(Var msg: TMsg; Var Handled: boolean);
      End;
     
    Var
      Form1: TForm1;
     
     
    {----------------------------------------------------------------}
    {                       }Implementation{                         }
    {----------------------------------------------------------------}
    {$R *.DFM}
     
    Var
      mb: Array[0..255] Of Bool;
     
     
    {----------------------------------------------------------------}
    Procedure TForm1.FormCreate(Sender: TObject);
    Begin
      Application.OnMessage := ProcMess;
    End;
     
     
    {----------------------------------------------------------------}
    Procedure TForm1.ProcMess(Var msg: TMsg; Var Handled: boolean);
    Begin
      If (msg.Message = WM_KEYDOWN) Then mb[msg.wparam] := True;
      If (msg.Message = WM_KEYUP) Then mb[msg.wparam] := False;
     
      If (msg.Message = WM_KEYDOWN) Then
        If ((mb[Ord('d')]) Or (mb[Ord('D')])) And
           ((mb[Ord('e')]) Or (mb[Ord('E')])) And
           ((mb[Ord('v')]) Or (mb[Ord('V')])) Then ShowMessage('ok!');
    End;
     
     
    {----------------------------------------------------------------}
    End.
    tu peux aussi utiliser les évènements OnKeyDown et OnKeyUp :
    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
    Var
      mb: Array[0..255] Of Bool;
     
     
    {----------------------------------------------------------------}
    Procedure TForm1.FormKeyDown(Sender: TObject; Var Key: Word;
      Shift: TShiftState);
    Begin
      mb[Key] := True;
      If ((mb[Ord('d')]) Or (mb[Ord('D')])) And
         ((mb[Ord('e')]) Or (mb[Ord('E')])) And
         ((mb[Ord('v')]) Or (mb[Ord('V')])) Then ShowMessage('ok!');
    End;
     
     
    {----------------------------------------------------------------}
    Procedure TForm1.FormKeyUp(Sender: TObject; Var Key: Word;
      Shift: TShiftState);
    Begin
      mb[Key] := False;
    End;
     
     
    {----------------------------------------------------------------}
    End.
    à+

    De retour parmis vous après 10 ans!!

  3. #3
    Membre régulier Avatar de micatmidog
    Profil pro
    Inscrit en
    Février 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Février 2004
    Messages : 94
    Points : 71
    Points
    71
    Par défaut
    Merci beaucoup pour ton aide

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Très bon article!! -> http://tcharles.developpez.com/simul/

    Petit aide-mémoire trouvé par hasard : http://algeria.free.fr/delphi.htm
    De retour parmis vous après 10 ans!!

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

Discussions similaires

  1. comment simuler l'appui d'une combinaison de touches
    Par camatchou dans le forum Débuter
    Réponses: 12
    Dernier message: 04/04/2014, 13h26
  2. Réponses: 8
    Dernier message: 27/06/2013, 14h26
  3. Réponses: 3
    Dernier message: 14/09/2009, 09h31
  4. Comment détecter une touche appuyée
    Par ninaleo dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2009, 09h31
  5. Réponses: 20
    Dernier message: 27/11/2007, 14h40

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