configurer une touche pour quitter un programme a tout moment

configurer une touche pour quitter un programme a tout moment - Delphi/Pascal - Programmation

Marsh Posté le 24-01-2012 à 15:47:34    

Bonjour
Je débute en programmation et j'aimerai créer une fonction ou une procédure qui me permettrait de quitter mon programme a n'importe quel moment en appuyant sur la touche echap par exemple.  
JE ne vois pas trop comment faire si vous pourriez m'aider =)

Reply

Marsh Posté le 24-01-2012 à 15:47:34   

Reply

Marsh Posté le 22-03-2012 à 10:00:19    

Bonjour,
Je ne suis pas non plus expert mais je pense que tu vas avoir besoin de créer un thread dédié à quitter le prog (il faudra un listener clavier) et un autre thread pour les opérations principales de ton programme.
 
Oula, j'me rend compte que le topic commence à dater un peu...

Reply

Marsh Posté le 18-04-2012 à 03:07:57    

Salut,
 
heu oui le topic date un peu mais ça peut être fort utile  ;)  
 
voila une idée qui n'est pas d'expert non plus mais qui peut rendre bien service pour des programmeurs en herbe  (à ne pas utiliser pour des applis où l'on a à enregistrer des infos importantes à moins de bien contrôler ce qu'on va faire derrière... enfin bref cela reste à commentaires)
 
en utilisant les events du clavier on peut avoir quelque-chose de fonctionnel! (http://delphi.about.com/cs/adptips [...] 0802_4.htm):
 
avec:
 

procedure TForm1.FormCreate(Sender: TObject) ;
begin
   KeyPreview := True;
end;


 
puis
 

procedure TForm1.FormKeyPress
   (Sender: TObject; var Key: Char) ;
begin
   if key = #27 then cekontveut;   //si la touche Esc est pressée...
end;


 
 
 
meme si c'est pas très "propre" on peut utiliser la caption du bouton qui va exécuter le code à quitter :
 
 
tout cela n'est qu'un exemple à mettre en application mais on utilisera:  
 
 

procedure TForm1.FormKeyPress
   (Sender: TObject; var Key: Char) ;
begin
   if key = #27 then   //si la touche Esc est pressée...
    begin
       if button1.caption:='Exit' then button1.caption:='Run' ; // voir après sur le reste de l'exemple  
    end;
end;


 
 
par défaut, donc avant le clic sur notre bouton, sa caption doit être "Run":
 

procedure TForm1.btn1Click(Sender: TObject);
var
  i:word;
begin
  button1.caption:='Exit'; // tant que l'on exécute notre code, on met notre caption du bouton à "Exit"...
   
  for i:= 1 to 2000000 do
    begin
       // memo1.lines.add('coucou');
       // enfin ce que l'on execute...
 
 
       if button1.caption='Run' then Exit; // si l'utilisateur a appuyé sur Escape on sort!
 
    end;
 
 
  button1.caption:='Run'; // fin de la procédure (ou fonction) si personne n'a pressé la touche Escape, on remet la caption de button1 à "Run"
 
 
end;


 
il faut bien faire attention aux majuscules de nos captions et surtout ne pas inverser nos "état de captions" mais cela fonctionne pas mal  ;)


Message édité par Flagad'aware le 18-04-2012 à 13:02:06
Reply

Marsh Posté le 18-04-2012 à 12:29:07    

Tu t'es trompé dans le dernier code:
 
Dans ta boucle il faut tester si le bouton a été transformé de 'Exit' en 'Run' car quand l'utilisateur clic sur 'Exit' pour sortir le bouton se transforme en 'Run'
donc:
       if button1.caption='Run' then Exit; // si l'utilisateur a appuyé sur Escape on sort!


---------------
Seul Google le sait...
Reply

Marsh Posté le 18-04-2012 à 13:03:22    

Oula oui merci c'est corrigé  :)  
 
c'est clair que la boucle n'irai pô loin  :whistle:

Reply

Sujets relatifs:

Leave a Replay

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