|
| timer Fra : Calle. |
Dato : 15-02-04 23:35 |
|
hvordan får man lavet så man kan se en timer tælle ned.
--
Calle
| |
René Jensen (16-02-2004)
| Kommentar Fra : René Jensen |
Dato : 16-02-04 00:06 |
|
Calle. wrote:
> hvordan får man lavet så man kan se en timer tælle ned.
Min løsning er ganske simpel, men viser hvordan du laver en
nedtællingsfunktion i et Delphi program.
Jeg benytter en variabel (TimerStop) til at holde styr på hvor mange
sekunder den skal tælle ned fra, f.eks. 10 sekunder, denne erklæres
selvf. i private delen af ens Form1 objekt:
TimerStop: Integer;
Under implementation delen erklæres en hjælpefunktion (SecToStr), som
tager en integer variabel og returnere en string med tidsformatering:
function SecToStr(i: Integer) : string;
var
j, k, l: Integer;
begin
j := i div 3600;
k := (i mod 3600) div 60;
l := (i mod 3600) mod 60;
Result := Format('%.2d:%.2d''%.2d', [j, k, l]);
end;
Når programmet starter sættes TimerStop variablen til det ønskede antal
sekunder, der skal tælles ned fra. Pga. Timer1.OnTimer event'et vil være
forsinket med 1000ms (Timer1.Interval attributten), kaldes SecToStr
funktionen for at vise den aktuelle tid der er tilbage. I Form1.OnCreate
event tilføjes:
TimerStop := 10;
Caption := SecToStr(TimerStop);
Det sidste der mangler er at skrive Timer1.OnTimer event'et:
if TimerStop > 0 then
begin
Dec(TimerStop);
Caption := SecToStr(TimerStop);
end
else
begin
// indsæt selv din ønskede kode, når nedtællingsfunktion afslutter
ShowMessage('Nedtælling færdig.');
end;
Med venlig hilsen,
René Jensen
| |
Finn Bindeballe (16-02-2004)
| Kommentar Fra : Finn Bindeballe |
Dato : 16-02-04 08:41 |
|
hejsa
vær opmærksom paa, at ttimer er meget upræsis.... det er ikke sikkert at
det gør noget, men jeg sqlle engang bruge noget mere præcist, og jeg
endte op med at bruge "now", som læset systemtiden. Den er meget mere
nøjagtig......
/f
| |
Nicolai Hansen (17-02-2004)
| Kommentar Fra : Nicolai Hansen |
Dato : 17-02-04 07:03 |
|
> hejsa
>
> vær opmærksom paa, at ttimer er meget upræsis.... det er ikke sikkert at
> det gør noget, men jeg sqlle engang bruge noget mere præcist, og jeg
> endte op med at bruge "now", som læset systemtiden. Den er meget mere
> nøjagtig......
>
> /f
TTimer blir unøjagtig når du går ret meget under 1/10 sek intervaller. Det
mest
præcise er, som anført, at aflæse systemtiden. Det endnu mere mest præcise
er at lægge denne aflæsning i programmets messagehandler (men dette er ofte
sort snak for Delphi folk), så jeg vil foreslå "bare" at lægge aflæsningen i
main
form'ens OnPaint.
| |
|
|