![]() |
Countdown
Ich möchte einen Countdown realisieren.
Angezeigt werden immer Minuten un Sekunden im Format mm:ss, z.B. 02:30. (Schöner wäre natürlich 2:30. Aber wie ?) Bisher habe ich folgende Lösung:
Delphi-Quellcode:
Das funktioniert zwar, doch mich dünkt, dass es auch eleganter geht.
rocedure TForm1.Timer1Timer(Sender: TObject);
var min, sec: Byte; smin, ssec: string; begin min := strtoint (copy (Label3.Caption, 1, 2)); sec := strtoint (copy (Label3.Caption, 4, 2)); if not ((sec = 0) AND (min = 0)) then begin if sec = 0 then begin dec (min); sec := 59; end else dec (sec); smin := inttostr (min); ssec := inttostr (sec); if length (smin) = 1 then smin := '0' + smin; if length (ssec) = 1 then ssec := '0' + ssec; Label3.Caption := smin + ':' + ssec; end; end; Timer-intervall natürlich auf 1000. |
Re: Countdown
Warum setzt du denn deine Countdownzeit in ein Label und nicht in eine Variable vom DatenType TTime. Damit sparst du dir das unübersichtliche Auseinanderpflücken und Zusammenfriemeln des Labels.
Gruß, |
Re: Countdown
wenn du es schaffst (soll auch leute geben die es nich schaffen :roll:) einen gültigen TTime-Wert in bspw. Edit1 reinzuschreiben, kannst du auch einfach den hier machen:
Delphi-Quellcode:
is ungetestet, sollte aber laufen, sowas sollte ich eigentlich auch um halb 10 noch hinkriegen :stupid: :mrgreen:
var TimeTill: TTime; //globale Countdown-Variable
... begin TimeTill := Time + StrToTime(Edit1.Text); //initialisieren bitte Timer1.Enabled := True; //jetz kanns losgehen end; ... procedure Timer1.Timer(Sender: TObject); begin if TimeTill > Time then //solang der Countdown läuft Label3.Caption := FormatDateTime('m":"ss',Time-TimeTill); //macht Delphi ganz komfortabel was du willst else Timer1.Enabled := False; //und wenn ende is is ende end; |
Re: Countdown
Hier meine Lösung:
Delphi-Quellcode:
var
startzeit : TTime; countdown : TTime; procedure TForm1.Button1Click(Sender: TObject); var stunden : Integer; minuten : Integer; sekunden : Integer; begin stunden := 0; minuten := 2; sekunden := 30; countdown := EncodeTime (stunden,minuten,sekunden,0); startzeit := Now; Timer1.Enabled := True; end; procedure TForm1.Timer1Timer(Sender: TObject); var jetzt : TTime begin jetzt := countdown + (startzeit-now); if (jetzt > 0 ) then Label1.Caption := FormatDateTime ('nn:ss',jetzt) else Label1.Caption := '00:00'; Application.ProcessMessages; end; |
Re: Countdown
Hmmm :?
Kann mwn von einem TTime-Wert eine Sekunde abziehen ? |
Re: Countdown
klar, wieso denn nicht...
Delphi-Quellcode:
TimeWert := TimeWert - StrToTime('00:00:01');
|
Re: Countdown
ja,
mit
Delphi-Quellcode:
var
T : TDateTime ; begin T := T - EncodeTime (0,0,1,0) ; end ; |
Re: Countdown
Zitat:
Einfach
Delphi-Quellcode:
begin
zeit := zeit - (EncodeTime (0,0,1,0)); end; |
Re: Countdown
Zitat:
Delphi-Quellcode:
...:cat:...
begin
zeit := zeit - 1/24/60/60; end; |
Re: Countdown
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz