timer

timer - Delphi/Pascal - Programmation

Marsh Posté le 21-04-2006 à 12:13:06    

bonjour à tous,  
j'apprend à utiliser le timer mais il y a une propriété dont je ne comprend pas bien l'utilité, c'est la propriété "tag". Le fichier d'aide de borland ne marche pas et je n'ai pas trouvé d'explication claire sur le net.  
 
Si quelqu'un pouvait m'éclairer sur ce qu'est la propriété tag ??
merci
 
++

Reply

Marsh Posté le 21-04-2006 à 12:13:06   

Reply

Marsh Posté le 21-04-2006 à 14:31:52    

La propriété Tag est une propriété présente dans tous les composants (Tcomponant) et ...qui ne sert à rien.
 
L'aide fonctionnant chez moi, voila les "détails":

Citation :

Tag n'a pas de signification prédéfinie.La propriétéTag est fournie pour les besoins des développeurs.Elle est proposée pour stocker une valeur entière ou elle peut être transtypée sur n'importe quelle valeur 32 bits,comme une référence de composant ou un pointeur.


En clair : si tu a besoin d'atribuer un numéro a ton composant, tu peu te servir de Tag

Reply

Marsh Posté le 21-04-2006 à 14:40:55    

ok merci bcp, une otre kestion me taraude,
je sais qu'un Timer permet de lancer une procédure tous les n millisecondes ( ce qui est défini dans la propriété interval), mais comment faire pour gérer les durées ??
Exemple : si je veux afficher un message pendant 5 secondes puis un otre message pendant 10 secondes, c'est un timer k'il fo utiliser ?

Reply

Marsh Posté le 21-04-2006 à 14:51:47    

Non. Ce serait vraiment galère d'utiliser les timer comme ça. Mieu vaut utiliser une procédure qui "attend" un certain temp.
Comme celles-ci:

procedure Pause(Delai : TDateTime);
var TopDepart : TDateTime;
begin
  TopDepart := now;
  While (now < TopDepart+Delai) do Application.ProcessMessages;
end;
 
procedure Pause(NbMillisecondes : integer); //attend un certai nombre de milliseconde
begin
  Pause(NbMillisecondes/86400000); //86400000=nb de milliseconde en une journée
end;


T'inquiete pas : elles libèrent le processeur pendant la pause


Message édité par el zozo le 21-04-2006 à 14:52:54
Reply

Marsh Posté le 21-04-2006 à 16:04:36    

la deuxième possibilité est ss erreurs? pause a en paramètre un entier or NbMillisecondes/86400000 n'en est pas forcément un
 
j'ai donc choisi la première, voici mon code (sensé afficher 'a' pdt trois seconde puis 'b') :
 
procedure TForm1.btnStartClick(Sender: TObject);
var TopDepart : TDateTime;
begin
  Label2.Caption:='a';
  TopDepart := now;
  While (now < TopDepart+3000) do Application.ProcessMessages;
  // Tracking(Timer1);
  Label2.Caption:='c';
end;
 
=> pas d'erreur de compilation mais à l'exécution l'interface affiche un a puis elle est se bloque...
 

Reply

Marsh Posté le 21-04-2006 à 16:18:36    

Nan  :lol: Y'a pas d'erreur  :lol:  
 
La première fonctionne toute seule.
La seconde apelle la première (TDateTime est en fait un type réél). Je l'ai mis parceque c'est plus pratique d'exprimer le temps en ms

Reply

Marsh Posté le 21-04-2006 à 16:21:09    

marcellus911 a écrit :

voici mon code (sensé afficher 'a' pdt trois seconde puis 'b') :
 
procedure TForm1.btnStartClick(Sender: TObject);
var TopDepart : TDateTime;
begin
  Label2.Caption:='a';
  TopDepart := now;
  While (now < TopDepart+3000) do Application.ProcessMessages;
  // Tracking(Timer1);
  Label2.Caption:='c';
end;
 
=> pas d'erreur de compilation mais à l'exécution l'interface affiche un a puis elle est se bloque...


Pas etonant  :D  Vas voir l'aide pour TDateTime, tu comprendra  :lol:  
 
Bon, allez! Je te donne la reponse! TDateTime indique un temp...en jours. Donc, ta boucle s'aretera dans 3000 jours.  [:gijar]


Message édité par el zozo le 21-04-2006 à 16:21:50
Reply

Marsh Posté le 28-04-2006 à 02:19:44    

marcellus911 a écrit :

ok merci bcp, une otre kestion me taraude,
je sais qu'un Timer permet de lancer une procédure tous les n millisecondes ( ce qui est défini dans la propriété interval), mais comment faire pour gérer les durées ??
Exemple : si je veux afficher un message pendant 5 secondes puis un otre message pendant 10 secondes, c'est un timer k'il fo utiliser ?


 
 
un truc plus  :hello: simple
 
procedure TForm1.FormCreate(Sender: TObject);
begin
timer2.Enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Enabled:=false;
timer2.Enabled:=true;
label1.Caption:='AA';
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
timer2.Enabled:=false;
timer1.Enabled:=true;
label1.Caption:='ss';
end;

Reply

Sujets relatifs:

Leave a Replay

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