Salut,
Tu peux aussi la dessiner toi-même ! Il faut définir la propriété TStatusPanel.Style à sOwnerDraw, et définir la manière de remplir le StatusPanel dans la réponse à l'évènement OnDrawPanel du StatusBar
Par exemple :
J'ai placé une StatusBar sur ma Form, défini trois volets et fixé la propriété Style du volet 1 à sOwnerDraw. J'ai rajouté un ProgressBar invisible (pour la facilité de gestion) et ça donne :
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
var
i ,j ,n, H, W : Integer;
begin
if Panel = StatusBar1.Panels[1] then // on vérifie le n° du panel
with StatusBar.Canvas do
begin
H:= Rect.Bottom - Rect.Top; // Hauteur du volet
W := H * 2 div 3; // largeur du pavé du faux progress
Pen.Color := Color; // bordure
Pen.Width :=2; // 2 points
Brush.Color := clNavy; // la couleur habituelle
With ProgressBar1 do // combien de pavés ?
j:= round( (Position-Min)/(Max-Min)* (Rect.Right-Rect.Left)/W) ;
For i:=0 to j - 1 do // on les dessine
Rectangle(Rect.Left+i*W,REct.Top,Rect.Left+(i+1)*W,Rect.Bottom);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position := (ProgressBar1.Position + 5) mod 100;
StatusBar1.Invalidate; // il faut rajouter pour redessiner
end;
Il y a peut-être + simple, mais ça, c'est possible.
Ken@vo
____________________
Code, Code, Codec !