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 :

Tester l'état de plusieurs touches du clavier en même temps


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Points : 70
    Points
    70
    Par défaut Tester l'état de plusieurs touches du clavier en même temps
    Bonjour,
    je cherche a conbiner l'action de plusieurs touches. J'ai le code suivant
    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
     if(GetAsyncKeyState(VK_ESCAPE) < 0 ) then
         begin
         close;
         end;
     
         if(GetAsyncKeyState(90) < 0 ) then
         begin
         STATE_object_move(tracteur,OBJECT_SPACE,-speed,0,0);
         end;
     
         if(GetAsyncKeyState(81) < 0 ) then
         begin
         STATE_object_rotate_z(tracteur,5,OBJECT_SPACE);
         end;
     
         if(GetAsyncKeyState(68) < 0 ) then
         begin
         STATE_object_rotate_z(tracteur,-5,OBJECT_SPACE);
         end;
    Le probléme et que je ne peu pas appuyer sur deux touches en même temps sinon il ne se passe qu'une action or je voudrais que si j'appuie sur deux touches en même temps les 2 actions se produisent mais comment faire ?
    merci
    Mon blog sur la 3d et la programation! de bien vouloir le visiter!

  2. #2
    Membre expérimenté
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Points : 1 557
    Points
    1 557
    Par défaut
    Bonjour

    Je pense que tu devrais utiliser la fonction GetKeyboardState à la place (une petite doc ici).
    Avant de poster, merci de consulter les règles du forum

  3. #3
    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!

    J'ai eu le même problème au tout début avec Delphi.
    Pour obtenir l'appui simultanné de touches, il faut enregistrer l'état de chacune dans un boolean, comme ceci:
    (peu importe la méthode utilisée pour récupérer le code des touches)
    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
    UNIT Unit1;
    INTERFACE
    USES Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,
         Forms,Dialogs,ExtCtrls,StdCtrls;
     
    TYPE
      TForm1 = CLASS(TForm)
        Label1: TLabel;
        PROCEDURE FormActivate(Sender: TObject);
        PROCEDURE ProcMess(var msg: TMsg; Var Handled: Boolean);
      END;
     
    VAR Form1:TForm1;
     
     
    {----------------------------------------------------------------}
    {                       }IMPLEMENTATION{                         }
    {----------------------------------------------------------------}
    {$R *.DFM}
     
    VAR  Etatkb:Array[0..255]of Boolean;
     
     
    {----------------------------------------------------------------}
    PROCEDURE TForm1.ProcMess(Var msg: TMsg; Var Handled: Boolean);
    VAR x:Integer;
    BEGIN
     
     IF(msg.Message=WM_KEYDOWN)THEN Etatkb[msg.wparam]:=True;
     IF(msg.Message=WM_KEYUP)THEN Etatkb[msg.wparam]:=False;
     
     IF(Etatkb[VK_ESCAPE])AND(Etatkb[VK_SHIFT])THEN
       Label1.Caption:='Touches Shift-Echap appuyées!' ELSE
       Label1.Caption:='Touches Shift-Echap relachées!';
     
    END;
     
     
    {----------------------------------------------------------------}
    PROCEDURE TForm1.FormActivate(Sender: TObject);
    BEGIN
      Application.OnMessage:=ProcMess;
    END;
     
     
    {----------------------------------------------------------------}
    END.

    Pour les touches de contrôle comme Alt ou Ctrl, il faut utiliser un hook clavier.
    Recheche sur le forum, le sujet a déjà été traîté il me semble... à+
    De retour parmis vous après 10 ans!!

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    ok merci je vais essayer
    Mon blog sur la 3d et la programation! de bien vouloir le visiter!

  5. #5
    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
    Quelques liens intérressants sur le sujet.
    http://www.developpez.net/forums/viewtopic.php?t=44685
    http://www.developpez.net/forums/viewtopic.php?t=231681
    http://delphi.developpez.com/sources...no40source0007
    (J'envisage prochainement de faire un tuto avec qq sources), à+
    De retour parmis vous après 10 ans!!

  6. #6
    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
    De retour parmis vous après 10 ans!!

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Points : 70
    Points
    70
    Par défaut
    ok merci la j'ai de quoi faire
    Mon blog sur la 3d et la programation! de bien vouloir le visiter!

  8. #8
    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
    Au passage, voici des fonctions très intérressantes pour une application console avec Delphi:
    http://www.geocities.com/alexfedorov/con_apps.htm

    J'ai essayé ces fonctions. J'ai dû faire quelques modifs par rapport à la source présente dans la page...
    Clrscr, GotoXY, KeyPressed, readKey, ShowCursor, etc... Je suis en train de développer une unité CRT pour Delphi.

    à+
    De retour parmis vous après 10 ans!!

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

Discussions similaires

  1. [Turbo Pascal] Détecter l'état de plusieurs touches
    Par olivier021072 dans le forum Turbo Pascal
    Réponses: 0
    Dernier message: 22/04/2012, 04h25
  2. Simuler plusieur touches du clavier en meme temps !
    Par Chyokyka dans le forum Débuter
    Réponses: 3
    Dernier message: 10/04/2008, 17h10
  3. Réponses: 4
    Dernier message: 06/11/2007, 14h36
  4. Intercepter plusieurs touches du clavier en même temps
    Par fabseven dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/03/2007, 18h20
  5. Réponses: 7
    Dernier message: 05/06/2006, 13h44

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