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

  FORUM HardWare.fr
  Programmation

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°81298
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 13-12-2001 à 15:31:30  profilanswer
 

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
mood
Publicité
Posté le 13-12-2001 à 15:31:30  profilanswer
 

n°81312
JWhy
je peux plier (héhé)
Posté le 13-12-2001 à 16:04:22  profilanswer
 

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
n°81520
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 14-12-2001 à 13:18:52  profilanswer
 

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
n°81521
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 14-12-2001 à 13:24:41  profilanswer
 

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
n°81529
JWhy
je peux plier (héhé)
Posté le 14-12-2001 à 13:40:03  profilanswer
 

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
n°81605
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 14-12-2001 à 17:10:22  profilanswer
 

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
n°81651
antp
Super Administrateur
Champion des excuses bidons
Posté le 14-12-2001 à 21:30:23  profilanswer
 

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
n°81826
juju_le_ba​rbare
Vous fiez pas aux apparences !
Posté le 15-12-2001 à 23:10:00  profilanswer
 

Merci beaucoup !


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
[VC++]Bouton qui lance une autre applis[Delphi] Un composant qui énumère les lecteurs ?
[Delphi]Chat par dessins ....[Delphi] MoDiFiEr Le ReGiStRe SVp !!!!
Bouton radio dans un formulairejava ou delphi
[Delphi] un equivalent aux hostvariable du Pro*C ?[Delphi] A propos des trackbar SVP !!!
[Delphi] Utiliser une base de donnée (Interbase) avec Delphi 6 perso.[DELPHI] impression du resultat d'une requete
Plus de sujets relatifs à : [Delphi] Lorsqu'on appuye sur entree, faire s'exécuter un bouton !!!!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR