Timer / mettre une temporisation a une action...

cs_sLaYeR31 Messages postés 31 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 11 mai 2010 - 9 avril 2004 à 17:45
cs_sLaYeR31 Messages postés 31 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 11 mai 2010 - 10 avril 2004 à 20:15
bonjour ! je voudrai temporiser une action, c.a.d, avec un bouton, qui active ou désactive l'option, qu'il éxecute une action toutes les minutes ( a peu près ) du moins a interval régulier.... comment faire ?
A voir également:

8 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 avril 2004 à 21:16
Première étape : le code dans l'évènement OnClick du bouton :
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Bazscule l'état actif/inactif du timer
  Timer1.Enabled := not Timer1.Enabled;
  //changer l'intitulé du bouton
  if Timer1.Enabled then
    Button1.Caption := 'Timer Activé'
  else
    Button1.Caption := 'Timer désactivé';
end;


Deuxième étape : vien ensuite le code à exécuter quand le timer est actif :
procedure TForm1.Timer1Timer(Sender: TObject);
var
  WinDir: array[0..Max_Path] of char;
begin
  //Recher le chemin de Windows 
  GetWindowsDirectory(@Windir, Max_Path);
  //Repeindre la fiche pour effacer le texte inscrit
  // précédemment sur la canvas de la fiche
   Repaint;
  //démarrer l'action et tester la valeur de 
  //retour de ShellExecute 
  if ShellExecute(0, nil, PChar(Windir+'\system32\cmd.exe'), PChar('/c net send /users '+Message_Edit.text), nil, SW_HIDE) > 32 then
     Canvas.Textout(10, 10 , 'Le Message à Bien été envoyé aux personnes accédant a vos dossiers partagés')
   else
     Canvas.TextOut(10, 10, 'Echec à l''envoi du message');

end;


En regardant le code que tu m'as communiqué, j'ai deux remarques à faire :
1- Utiliser le registre pour connaitre le chemin de windows n'est pas une bonne idée. Sur mon système, je n'avais aucune entrée portant ce nom à l'endroit recherché. J'ai donc remplacé par un appel à GetWindowsDirectory qui renverra toujours la valeur correcte, quelle que soit la version de Windows.

2- Un appel à la fonction ShowMessage est formellement déconseillé dans un évènement qui s'exécute aussi fréquemment (1 seconde) car le programme est bloqué tant que l'utilisateur n'a pas appuyé sur le bouton ok. Il finira par se lasser très vite. %-6

Bonne chance pour la suite.
0
Rejoignez-nous