Timer + ProgressBar.

Tags:    delphi

User
Bruger #476 @ 20.10.01 18:55
Jeg leger med en Timer og en ProgressBar. Jeg har lavet et lille program, hvor man
i en edtBox kan skrive hvor mange sekunder en ProgressBar er om at
blive fyldt ud. Men jeg kan ikke få ProgressBaren til at stoppe når den
bliver fyldt ud. Den starter fra 0 igen og køre så forfra. Hvordan gør jeg,
så den stopper efter første gang, når den når til 100% ??

Her er en lille programstump, som jeg håber kan hjælpe på mit spørgsmål.

procedure TProgressBarForm.TimerTimer(Sender: TObject);
var
I : Integer;
begin
Timer.Enabled := True;
for I := 1 to 100 do
begin
sleep(AntalSekunder*10);
ProgressBar.Position := I;
end;
end;



<quote>Jeg leger med en Timer og en ProgressBar. Jeg har lavet et lille program, hvor man
i en edtBox kan skrive hvor mange sekunder en ProgressBar er om at
blive fyldt ud. Men jeg kan ikke få ProgressBaren til at stoppe når den
bliver fyldt ud. Den starter fra 0 igen og køre så forfra. Hvordan gør jeg,
så den stopper efter første gang, når den når til 100% ??
</quote>

Du skal stoppe din timer efter den har kørt færdig første gang.

<pre>
procedure TProgressBarForm.TimerTimer(Sender: TObject);
var
I : Integer;
begin
Timer.Enabled := True; //den her linje er overflødig - timeren kører jo allerede
for I := 1 to 100 do
begin
sleep(AntalSekunder*10);
ProgressBar.Position := I;
end;
Timer.Enabled := False; //stop timeren
end;
</pre>



Hvis jeg har forstået dig ret, kan du gøre følgende:<pre>if Progressbar1.Position = 100 then Timer1.Enabled := False;</pre>



<quote><pre>
sleep(AntalSekunder*10);
</pre></quote>

En lille note til dig, du bør aldrig bruge <pre>sleep</pre> functionen, fordi den låser dit program og du kan ikke engang flytte på formen brug i stedet

<pre>
Var
I: Integer;
Begin
I := 0;
Repeat
Inc(I);
Application.ProcessMessages; // Denne linje for program til at udføre alle messages som står i kø
Until (AntalSekunder*10);
End;
</pre>

Why Aren't You Coding ?
Aaangel



t