Lancer une action par une touche du clavier

Signaler
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008
-
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
-
Bonjour à tous.

Je suis actuellement en train de réaliser un petit sampleur rapide en Delphi (2005), et je voudrais savoir comment faire pour que lorsque que l'utilisateur appuie, par exemple, sur la touche "1" du pavé numérique, une action se lance (par exemple, lancement d'un WAV) ?
Je suppose que je dois utiliser OnKeyPress (ou quelque chose comme ça...) mais je ne sais pas comment.

Merci par avance de vos réponses,
Bonne continuation a tous.

-={ Benjamin }=-

7 réponses

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
regarde plutot du coté de windows.GetAsyncKeyState si les touches peuvent restée maintenues (accords).
ou OnKeyDown et OnKeyUp.

<hr size="2" width="100%" />Croc (click me)
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

c'est surement ça que tu cherche:

- Form1.KeyPreview := true;
- Form1.OnKeyDown (permet aussi de catcher les touches virtuelles comme VK_RETURN ou WK_DOWN)

l'aide te donnera les détails...

bon code
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008

Merci à tous pour votre aide et vos réponses mais je n'arrive pas à obtenir le résultat souhaité: je voudrais que lorsque que j'appuie sur (exemple) F2, un code que j'ai tapé se lance.
J'ai essayé avec des choses du type:

procedure Form1.OnKeyPress(Sender : TObject; var Key : char);

begin

if Key = VK_F2 then
begin

mon code
end;
end;

Mais sa ne marche pas.

Voilà, merci encore à tous.
(PS: dsl pour l'orthographe ;))
Messages postés
59
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
27 juillet 2008

(Mon projet est de faire un sampleur : chaque touche correspond à un son.)
Messages postés
288
Date d'inscription
mardi 2 mai 2006
Statut
Membre
Dernière intervention
12 octobre 2011

salut ,
dans evenements tu fais on key press puis tu ecris quelle touche >> entrée puis la procedure !

@+
Messages postés
1727
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 novembre 2021
8
Salut,

VK_F2 est une valeur de type Word, et pas de type Char.
Il te faut l'utiliser avec l'évènement OnKeyDown, comme ceci :

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F2 then
  begin
    // ton code
  end;
end;

mais vu l'utilisation que tu veux faire du clavier, il vaut mieux utiliser case of :

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_F2: ton code;
    VK_F3: ton code;
    VK_F4: ton code;
    // etc
  end;
end;

Bonne prog'
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
au risque de me repeter:

- Form1.KeyPreview := true; <---- !!!
- Form1.OnKeyDown

et t'as interet a faire une methode par touche:
(genre "procedure TForm1.DoF2", DoF3, ...)
si tu veux pas avoir un event qui fait 300 lignes....

bon code,