Timer

e14273 Messages postés 12 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 9 juin 2006 - 21 avril 2006 à 12:09
e14273 Messages postés 12 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 9 juin 2006 - 24 avril 2006 à 10:39
bonjour à tous,
j'apprend à utiliser le timer mais il y a une propriété dont je ne comprend pas bien, 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

++

9 réponses

DeltaFX Messages postés 449 Date d'inscription lundi 19 avril 2004 Statut Membre Dernière intervention 8 avril 2009 2
21 avril 2006 à 13:31
C'est juste un integer. Ca ne sert a rien en soit, mais ca permet d'identifier ton timer, par exemple. Beaucoup de composant delphi (voir meme tous ?) ont la propriété Tag.
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
21 avril 2006 à 13:37
Salut,
voici ce que dit l'aide de Delphi:

Stocke une valeur entière dans un composant.

property Tag: Longint;

Description

La propriété Tag n'a pas de rôle prédéfini. Cette propriété est proposée afin de pouvoir stocker une valeur entière ou un pointeur si cela s'avère utile dans une application.
Par exemple, la propriété Tag peut s'utiliser pour implémenter des instructions de sélection avec un composant.

Et l'exemple qui va avec:

L'exemple suivant permet à l'utilisateur de se changer de cellule sélectionnée dans une grille de données.
Les boutons Haut et Bas ont leur événements OnClick associés à la procédure UpDownClick.
Les boutons Gauche et Droite buttons ont leur événements OnClick associés à la procédure LeftRightClick.
Les boutons Haut et Gauche ont leur propriété Tag initialisée à ?1
alors que pour les boutons Bas et Droite, elle est initialisée à 1.

procedure TForm1.UpDownClick(Sender: TObject);
begin
Table1.MoveBy(TComponent(Sender).Tag);
DBGrid1.SetFocus;
end;

procedure TForm1.LeftRightClick(Sender: TObject);
begin
DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + TComponent(Sender).Tag;
DBGrid1.SetFocus;
end;

@+
Cirec
0
e14273 Messages postés 12 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 9 juin 2006
21 avril 2006 à 14:42
ok ok ben 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 ?
0
Utilisateur anonyme
21 avril 2006 à 14:48
Salut tu peux utiliser sleep :



Edit1.text:='ton message';

sleep(5000); // en miliseconde soit 5s

// le reste de ton code//

sleep(10000); // 10 sec



A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
21 avril 2006 à 16:09
Je propose une très légère amélioration de la méthode de Francky.

En effet, un Sleep(5000) bloque complètement l'application durant 5 secondes: elle paraît morte et on ne peut rien en faire... Elle ne redessienra par exemple même pas le contenu de ses forms.

On peut utiliser Application.ProcessMessage pour demander à l'appli de traiter les messages de windows, genre redessine toi, ferme toi et tout et tout. Cependant, le risque est que l'utilisateur clique sur un bouton alors qu'on aurait préféré qu'il attende...

Donc il faut parfois mettre les propriétés Unable des contrôles à False avant de faire des ProcessMessage, tout dépend de ton application...

Il faut en faire quelques-uns au milieu des Sleep long, genre :

for nI:= 1 to 50 do
begin
Sleep(100 * I);
Application.ProcessMessage;
end;
0
e14273 Messages postés 12 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 9 juin 2006
21 avril 2006 à 16:12
voici mon programme (très basique, censé afficher un 'a' puis 2 secondes plus tard afficher un 'c' dans un Edit1)

procedure TForm1.btnStartClick(Sender: TObject);
var TopDepart : TDateTime;
begin
Edit1.text:='a';
sleep(2000);
Edit1.text:='c';
end;

=> lorskon clique sur start le programme n'affiche rien pdt 2 secondes puis affiche la lettre c. pourkoi il n'affiche pas la lettre 'a' pdt ces deux secondes??

merci ++
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
21 avril 2006 à 16:21
Bah c'est ce que j'ai posté.

procedure TForm1.btnStartClick(Sender: TObject);
var
TopDepart : TDateTime;
nI: Integer;
begin
//Pour empècher l'utilisateur de le réutiliser
btnStartClick.Enable:= False;
Edit1.text:='a';
for nI:= 1 to 20 do
begin
//Permettra à l'application de se redessiner
Application.ProcessMessage;
Sleep(100 * I);
end;
Edit1.text:='c';
end;

le trhead (Le "flux d'execution") de ton appli ne peut faire qu'une chose à la fois. Il peut pas dormir et redessiner en même temps.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
21 avril 2006 à 16:23
Argl... pardon pour le double post, j'ai foiré ma variable I/nI...

Met que des I ou que des nI.
0
e14273 Messages postés 12 Date d'inscription jeudi 20 avril 2006 Statut Membre Dernière intervention 9 juin 2006
24 avril 2006 à 10:39
merci rt15 qd g poster le message de 16h12 celui que tu avais poster deux minutes plutôt n'était pas encore visible. désolé ++
0
Rejoignez-nous