ProgressBar

cs_bmwalid Messages postés 13 Date d'inscription dimanche 7 juillet 2002 Statut Membre Dernière intervention 2 janvier 2005 - 8 déc. 2004 à 16:15
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 - 8 déc. 2004 à 17:55
salut
comment faire un ProgressBar dans un StatusBar comme cel de internet explorer ?
merci

2 réponses

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
8 déc. 2004 à 16:23
hello,
tu peux prendre mettre un tPanel en Align := AlBottom; puis virer le caption, reduire un peu la hauteur de ce panel, et mettre dedans une progressbar. si tu veux kelle suive le redimentionnement de ta fenetre en etant collée a droite, n'oublie pas de mettre les anchors comme ceci :
akLeft > false;
akRight > true;
top et bottom on s'en fiche :)

voila :D sinon il est possible kil existe un composant ki gere une progress ds une statusbar mais je ne le connais pas et ce ne sera pas un composant dit "de base"

+++

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
0
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
8 déc. 2004 à 17:55
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 !
0
Rejoignez-nous