Lancer une action par une touche du clavier

cs_kanabis Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 juillet 2008 - 23 oct. 2006 à 19:26
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 25 oct. 2006 à 11:14
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

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 oct. 2006 à 00:04
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)
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
24 oct. 2006 à 11:24
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
0
cs_kanabis Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 juillet 2008
24 oct. 2006 à 19:00
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 ;))
0
cs_kanabis Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 27 juillet 2008
24 oct. 2006 à 19:12
(Mon projet est de faire un sampleur : chaque touche correspond à un son.)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nethacker Messages postés 288 Date d'inscription mardi 2 mai 2006 Statut Membre Dernière intervention 12 octobre 2011
24 oct. 2006 à 20:05
salut ,
dans evenements tu fais on key press puis tu ecris quelle touche >> entrée puis la procedure !

@+
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
24 oct. 2006 à 20:14
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'
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
25 oct. 2006 à 11:14
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,
0
Rejoignez-nous