13. maj 2006 - 15:03
Der er
1 løsning
progressbar i statusbar
Hej igen igen
Hvordan opretter jeg en progress bar i en statusbar1.panels[1]
den skal køre sådan at når en side på nettet åbnes skal den køre samtidig. Kan det lade sig gøre og hvordan?
hvis nogen har en kode til det vil jeg blive glad.
på forhånd tak
Put en ProgressBar på din form et sted, lige meget hvor, or sæt Visible property til False.
Dan nogle Panels i StatusBar og sæt et af panelernes Style property til psOwnerDraw.
Dan OnDrawPanel event til StatusBar og skriv følgende kode:
const
PanelNumber = 1; // 0..N
procedure TMainForm.StatusBarDrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
// sæt Panels[i].Style = psOwnerDraw (i = StatusBar.Panel hvor ProgressBar skal vises)
if (StatusBar = Self.StatusBar) and (Panel =
StatusBar.Panels[PanelNumber]) then
ProgressBar.BoundsRect := Rect;
end;
Det er alt.
For at gøre det simpelt at bruge ProgressBar kan du tilføje denne procedure:
procedure TMainForm.ShowProgressBar(Show: Boolean; Min, Max, Position:
Integer);
begin
if not Show then
ProgressBar.Visible := False
else
if Position > 0 then
ProgressBar.Position := Position
else
begin
ProgressBar.Min := Min;
ProgressBar.Max := Max;
ProgressBar.Position := Position;
ProgressBar.Parent := StatusBar;
ProgressBar.Visible := True;
end;
end;
Nu kan du gøre sådan noget her:
ShowProgressBar(True, 0, MaxCount, 0); // vis p.bar
for Count := 1 to MaxCount do
begin
ShowProgressBar(True, 0, 0, Count); // opdater p.bar
{do something}
end;
ShowProgressBar(False, 0, 0, 0); // skjul p.bar
Så er det op til dig selv at finde ud af hvornår du vil opdatere ProgressBar.