Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4497 connectés 

 


Dernière réponse
Sujet : [Delphi] Lorsqu'on appuye sur entree, faire s'exécuter un bouton !!!!!
juju_le_barbare Merci beaucoup !

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
juju_le_barbare Merci beaucoup !
antp 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]

juju_le_barbare 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;

JWhy 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".

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

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 !

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:
JWhy Tu as une propriété "Default" sur le TButton.  
Il suffit de la passer a "True" pour que ca fasse ce que tu veux!
juju_le_barbare 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

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)