Pasek Statusu: Komponent StatusBar z zakladki Win32.
Wrzucasz go na forme i dwuklikasz. Otwiera sie edytor paneli - mozesz dodawac panele i ustawiac ich szerokosc, tekst. Albo zmieniac tekst w trakcie programu np przez StatusBar1.Panels[1].Text:='bleee';
Jak ustawisz wlasciwosc Panelu Style na psOwnerDraw (a nie psText) to mozesz wstawiac nie tylko tekst ale praktycznie co chcesz do panelu. Np zrobic progress bar.
Ponizszy kod rysuje na Panelu nr 1 (czyli drugim) StatusBar1 progressbar o wartosci procentowej (0-100) znajdujacej sie we wlasciwosci formularza Progress, przy czym kolor ProgressBaru zmienia sie plynnie od czerwonego do zielonego. Druga procedura to demo uruchamiane Button3;
pamietaj, musz byc prznajmniej 2 panele na statusbar1 i panel nr 1 musi miec Style psOwnerDraw
(a moze ktos potrafi wstawic gotowy progressbar na panel statusbara? ja nie :( )
type
TForm1 = class(TForm)
(...)
private
{ Private declarations }
fProgress : double;
public
{ Public declarations }
property Progress : double read fProgress write fProgress;
end;
(...)
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
{obsluga zdarzenia OnDrawPanel komponentu StatusBar1}
var
R : TRect;
color : TColor;
Red: Byte;
Green : Byte;
begin
if Panel.Index=1 then
begin
R:=Rect;
R.Right:=R.Left+Trunc((Rect.Right-Rect.Left) * Progress);
if Progress >=0.5 then
begin
Red:=Trunc($FF*(1-(Progress-0.5)2));
Green:=$FF;
end
else
begin
Red:=$FF;
Green:=Trunc($FFProgress*2)
end;
Color:=Green shl 8+Red;
StatusBar1.Canvas.Brush.Color:=Color;
StatusBar1.Canvas.Pen.Color:=Color;
StatusBar1.Canvas.Rectangle(R);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to 100 do
begin
Progress:=i/100;
StatusBar1.Refresh;
Sleep(30);
end;
end;
--Pawel
Delphi6