[Delphi] Lorsqu'on appuye sur entree, faire s'exécuter un bouton !!!!!

Lorsqu'on appuye sur entree, faire s'exécuter un bouton !!!!! [Delphi] - Programmation

Marsh Posté le 13-12-2001 à 15:31:30    

bonjour,
 
Par exemple je créé 2 zones de texte, puis en dessous un bouton 'OK'.
J'aimerais que lorsque l'utilisateur appuye sur 'Entree', il appuie en fait sur le bouton OK, sans la souris, et sans utiliser la tablation...
C'est sûrement une gestion du focus ...
 
Merci beaucoup


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 13-12-2001 à 15:31:30   

Reply

Marsh Posté le 13-12-2001 à 16:04:22    

Tu as une propriété "Default" sur le TButton.  
Il suffit de la passer a "True" pour que ca fasse ce que tu veux!


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 14-12-2001 à 13:18:52    

viiz a écrit a écrit :

Si tu veux en gérer plusieurs, dans l'évènement OnKeyDown du bouton tu peux mettre ca:
 
if Key = VK_RETURN then
  ButtonkivabienghClock(Self);
 
 :hello:  




 
Merci de vos réponses ! je vais voir ça tout de suite !


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 14-12-2001 à 13:24:41    

ca marche impec la 1ere méthode, mais la 2eme tu pourrais mieux me l'expliquer STP ?
 
VK_RETURN c'est la touche 'enter' ?


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 14-12-2001 à 13:40:03    

oui, VK_RETURN correspond a la touche "Entrée"
 
Par contre, viiz, pour que le bouton recoive onKeyDown, il faut qu'il ait le focus, non ?
 
une facon de contourner le pb serait de mettre la propriété "KeyPreview" de la Form a "True" (tout les evenements clavier sont d'abord déclencher au niveau de la form) et de mettre le code dans le onKeyDown de la form et non du bouton.
 
Pour tester ca, Juju, ouvre un nouveau projet, pose tes 2 champs TEdit et 4 TButton (pas la peine de les renommer) et dans le l'évenement onClick des boutons, fait un ShowMessage indiquant sur quel bouton tu te trouves.  
 
Par ex:

Code :
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   showmessage('Button 1');
  4. end;
  5. procedure TForm1.Button2Click(Sender: TObject);
  6. begin
  7.   showmessage('Button 2');
  8. end;
  9. procedure TForm1.Button3Click(Sender: TObject);
  10. begin
  11.   showmessage('Button 3');
  12. end;
  13. procedure TForm1.Button4Click(Sender: TObject);
  14. begin
  15.   showmessage('Button 4');
  16. end;


 
Puis dans le OnKeyDown de la form, gere les différentes "key" comme viiz a proposé:

Code :
  1. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  2.   Shift: TShiftState);
  3. begin
  4.   if Key = VK_MENU then
  5.     Button1Click(nil);
  6.   if Key = VK_SHIFT  then
  7.     Button2Click(nil);
  8.   if Key = VK_CONTROL  then
  9.     Button3Click(nil);
  10.   if Key = VK_RETURN  then
  11.     Button4Click(nil);
  12. end;


 
 
Donc de cette facon, tu vas déclencher la fonction associée a l'évenement OnClick du bouton en fonction de la touche saisie
 
Dans ce cas, la touche Alt affichera "Button 1", la touche Shift affichera "Button 2", la touche Control affichera "Button 3" et la touche Entrée affichera "Button 4".


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 14-12-2001 à 17:10:22    

OK Merci c'est ce que je vais faire, mais j'aimerais savoir (oui je sais je suis curieux ;-) à quoi correspond 'nil' dans :
 

Code :
  1. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  2.   Shift: TShiftState);
  3. begin
  4.   if Key = VK_MENU then
  5.     Button1Click(nil);
  6.   if Key = VK_SHIFT  then
  7.     Button2Click(nil);
  8.   if Key = VK_CONTROL  then
  9.     Button3Click(nil);
  10.   if Key = VK_RETURN  then
  11.     Button4Click(nil);
  12. end;


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 14-12-2001 à 21:30:23    

dans cet exemple, nil c'est l'objet qui a déclanché l'événement (le Sender que tu reçois dans la plupart des événements)
C'est pratique si par ex tu as trois boutons reliés à la même fonction, tu spécifies une valeur différente pour leur propriété "tag" et tu fais un truc du genre:
 

Code :
  1. procedure TForm1.ButtonClick(Sender: TObject);
  2. begin
  3.   with Sender as TComponent do
  4.   begin
  5.     case Tag of
  6.       1: ...
  7.       2: ...
  8.       3: ...
  9.     end;
  10.     ShowMessage(Format('On a cliqué sur le bouton appelé "%s"', [Label]));
  11.   end;
  12.   ... ici on place le code commun aux trois ...
  13. end;


 
bon ici l'exemple est un peu bidon, mais ça m'a déjà servi (dans des Menus ou des ActionList par exemple).

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-12-2001 à 23:10:00    

Merci beaucoup !


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed