e14273
Messages postés12Date d'inscriptionjeudi 20 avril 2006StatutMembreDernière intervention 9 juin 2006
-
21 avril 2006 à 12:09
e14273
Messages postés12Date d'inscriptionjeudi 20 avril 2006StatutMembreDerniè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
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 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.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 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;
e14273
Messages postés12Date d'inscriptionjeudi 20 avril 2006StatutMembreDerniè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 ?
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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;
e14273
Messages postés12Date d'inscriptionjeudi 20 avril 2006StatutMembreDerniè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??
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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.