cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 14 févr. 2002 à 19:40
Cool, mon gars.
Si on ne peut pas le faire en conception, on peut toutefois y parvenir à l'éxécution.
Recette (en exécution seulement):
1/ Crée un TprogressBar
2/ Attribue lui comme parent le TStatusBar
3/ Modifie les coordonnées Top, left, Width, Heigt. Pour ces deux dernières, tiens compte de la hauteur du canvas du TStatusBar
Pour le reste (progression, etc), à toi de jouer.
Le principe est le même pour une image.
[mailto:delphi@delphiprog.fr.fm Delphiprog]
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 19 févr. 2002 à 19:12
procedure TForm1.Button1Click(Sender: TObject);
var
//Pour abréger l'écriture :
SB : TStatusBar;
//Déclaration d'un TProgressBar
PB : TProgressBar;
//variable de compteur
i : integer;
//structure de type rectangle
Rect : TRect;
begin
//Sb reprends les valeurs de StatusBar1
Sb := StatusBar1;
//Récupération des coordonnées
Rect := SB.ClientRect;
//Création à l'éxécution
PB := TProgressBar.Create(Self);
with PB do
begin
//Le composant qui va accueillir le ProgressBar
Parent := StatusBar1;
//Paramètrage des valeurs de départ
// ici de 0 à 2000 par pas de 5
Min := 0;
Max := 20000;
Position := Min;
Step := 5;
//Entrée dans une boucle d'affichage
{ATTENTION : en utilisant une boucle FOR car l'incrémentation de i est
toujours de 1, alors que celle créée par la méthode StepIt est variable.
Celà peut engendrer des effets inattendus !}
i:=0;
repeat
inc(i, Step);
//Déplacement du curseur visuel
StepIt; //voir également : Position:= i;
{Comme certains traitements peuvent être longs,
ne pas oublier de rendre la main au système entre deux}
Application.ProcessMessages;
until i=max;
//Destruction du composant
Free;
{Libération des ressources allouées à la copie
de StatusBar1}
SB := NIL;
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
//Le premier Panel de StatusBar1 occupe les 3/4 de la largeur
StatusBar1.Panels[0].Width:=round(StatusBar1.Width * 3 / 4)
end;
8-) 8-) 8-) 8-) 8-) 8-) 8-) 8-) 8-) 8-)