salut
je voudrais pouvoir gérer un chrono de l'exécution d'une tache.
A la fin de l'exécution je souhaiterais pouvoir mettre le temps d'execution dans dans statusbar.
merci pour le coup de pouce.
a+
salut
je voudrais pouvoir gérer un chrono de l'exécution d'une tache.
A la fin de l'exécution je souhaiterais pouvoir mettre le temps d'execution dans dans statusbar.
merci pour le coup de pouce.
a+
La patience est un Chemin d'or
Salut,
Déjà, il te faut rajouter un Panel à ta StatusBar en éditant la propriété Panels.
Ensuite, il te suffit de mettre du texte dans la propriété Text du Panels ...
Petit exemple :
Start et Stop sont soit des cardinaux, soit des integer soit des extended ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TForm1.Button1Click(Sender: TObject); begin // On récupère la valeur du Ticket avant le traitement start:=GetTickCount; // On fait le traitement //... //... // On récupère la valeur du Ticket après le traitement stop:=GetTickCount; // Un peu de maths pour en déduire le temps mis (division par 1000 pour l'avoir en secondes) StatusBar1.Panels[0].Text:='Temps: '+FloatToStr((stop-start) / 1000)+' seconde(s)'; end;
J'espère t'avoir aidé
A+
super ça marche bien.
je souhaiterais pouvoir avoir 2 notification dans le statusbar.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 StatusBar1.Panels[0].Text:='Formatage du fichier '+ExtPart+' effectué'; StatusBar1.Panels[1].Text:='Temps: '+FloatToStr((stop-start) / 1000)+' seconde(s)';
mais juste une coquille car j'ai une affichage tronqué du premier panel.que faire?
puis je colorier le texte d'un panel?
a+
La patience est un Chemin d'or
Re,
Il suffit juste de définir la propriété Width de ton Panel :
Voilà ... bien entendu, à toi de coder si tu veux le faire pour d'autres panels
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 var longueurTexte:Integer; MonTexte,ExtPart:String; begin ExtPart:='UnBiduleMachinChouette'; MonTexte:='Formatage du fichier '+ExtPart+' effectué'; // On va savoir quelle longueur doit avoir le Panel longueurTexte:=Canvas.TextWidth(MonTexte); // On dit que le Panels[0] aura une longueur de "longueurTexte+10" StatusBar1.Panels[0].Width:=longueurTexte+10; // On affiche le texte dans le Panel StatusBar1.Panels[0].Text:=MonTexte; // Au passage, on le centre ... StatusBar1.Panels[0].Alignment:=taCenter; StatusBar1.Panels[1].Text:='Temps: 10,25 seconde(s)'; end;
salut
merci pour le coup de main trèsn sympa.
peut tu m'indiquer la propriété a associer au panal pour que le texte soit d'une couleur donnée.
a+
La patience est un Chemin d'or
Alors, là c'est un poil plus compliqué.
En effet, on va dessiner sur le canevas des panel via l'événement OnDrawPanel qu'offre la StatusBar.
Il faut prendre le soin de mettre la propriété Style de tes Panels à psOwnerDraw, ce qui signifie que c'est nous qui allons définir comment doit être écrit le texte.
Ensuite, voici un petit exemple d'utilisation :
J'espère qu'avec ça tu vas t'en sortir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 var Form1: TForm1; MonTexte1,MonTexte2,ExtPart:String; implementation {$R *.dfm} procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); var longueurTexte:Integer; CentrerX:integer; begin // Là on teste pour savoir quel texte doit être formaté de tel ou tel façon if Panel.DisplayName = MonTexte1 then begin // On récupère la taille du texte longueurTexte:=Canvas.TextWidth(MonTexte1); // On définit la taille du Panels qui lui correspond StatusBar1.Panels[0].Width:=Canvas.TextWidth(MonTexte1)+10; // On défini la couleur de la fonte StatusBar.Canvas.Font.Color:=clRed; // On écrit dans la zone du panel StatusBar.Canvas.TextRect(Rect,Rect.Left,Rect.Top,MonTexte1); end else begin if Panel.DisplayName = MonTexte2 then begin longueurTexte:=Canvas.TextWidth(MonTexte2); // Ici CentrerX va contenir la position du texte en X qui pas permet de centrer le texte CentrerX:=Rect.Right-Rect.Left; CentrerX:=Rect.Left+CentrerX div 2 - longueurTexte div 2; // J'affecte une valeur de 100 en width supplémentaire pour prouver que mon centrage est effectif StatusBar1.Panels[1].Width:=Canvas.TextWidth(MonTexte2)+100; // On définit la couleur StatusBar.Canvas.Font.Color:=clGreen; // On écrit dans le Panel concerné StatusBar.Canvas.TextRect(Rect,CentrerX,Rect.Top,MonTexte2); end; end; end; procedure TForm1.Button3Click(Sender: TObject); begin ExtPart:='UnBiduleMachinChouette'; MonTexte1:=' Formatage du fichier '+ExtPart+' effectué'; MonTexte2:='Temps: 10,25 seconde(s)'; StatusBar1.Panels[0].Text:=MonTexte1; StatusBar1.Panels[1].Text:=MonTexte2; end; end.
Si besoin est, n'hésites pas
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager