Entwickler-Ecke
Sonstiges (Delphi) - Countdown-Programm
Barracuda - Di 25.11.08 23:01
Titel: Countdown-Programm
Hi Delphianer
Es ist schon eine Zeit her, seit ich mich das letzte Mal mit Delphi beschäftigt habe. Nun will ich wieder mal ein Programm machen (Immer ein Countdown von 5 Minuten auf 0, sobald "Enter" gedrückt wird die Zeit wieder auf 5 Minuten zurückgesetzt. Die Zeit soll wenn möglich in einer schönen Digital-Uhr angezeigt werden (also auf dem Schirm), halt so dass es wie eine kleine Bombe oder so aussieht.)
Könnt ihr mir bitte helfen, ich weis zwar so mit Timer und Tastaturabfrage und so, brings aber nicht auf die Reihenfolge...
Liebe Grüsse
JayEff - Di 25.11.08 23:09
Was hast du denn bisher?
Ich denke das Konzept wäre ein Timer auf 1 sekunde, 2 globale Variablen (Minute, sekunde). Im timer wird Sekunde dekrementiert, falls die sekunde -1 wird, wird sie auf 59 gesetzt und die minute dekrementiert, falls dann die minute -1 ist, ist die Zeit abgelaufen.
Wegen der Entertaste, nutze das onKeyDown wo du auf Key = VK_Return prüfst. Form1.KeyPreview sollte auf True sein.
edit:
delphi-hilfe hat folgendes geschrieben: |
Die Eingabetaste wird von KeyPreview nicht berücksichtigt, da diese kein Tastaturereignis auslöst. |
Oh. :(
oldmax - Mi 26.11.08 14:14
Hi
Vielleicht überlegst du einmal kurz:
Was brauchst du:
Eine Funktion, die einen String in eine Zeit wandelt
also StrToTime(..)
Eine Funktion, die eine Zeit in einen String ( Zeit) wandelt
FormatDateTime('hh:nn:ss',...)
Nun noch vielleicht 2 globale Variablen vom Typ TTime und einen Timer, der dir die Ausgabe aktualisiert...
z.B.
Var ....
CountDown_Start : TTime;
Start_Time : TTime;
Nun noch die Ausgabe in einem Label sowie das setzen der Startzeit mit einem Button
Startzeit setzen in dem ButtonClick-Ereignis
Label1.Caption:='00:05:00'; // Label mit der Startzeit setzen
CountDown_Start :=StrToTime(Label1.Caption); // String in Zeit wandeln
Start_Time:=Now; // aktuelle Zeit merken
Countdown in der OnTimer:
Label1.Caption:=FormatDateTime('hh:nn:ss',CountDown_Start-(Now-Start_Time));
So, diese Zeile zerlegen wir mal in
Zeit in String
Zeitaktuell
Countdown-Startwert
Startzeit
Zeit in String ist Label1.Caption
Zeit aktuell ist Now
Countdown-Startwert ist CountDown_Start
und die aktuelle Zeit beim Start des countdown war Start_Time
Now - Start_Time ergibt die Zeitdifferenz
Diese ziehen wir vom Countdown Startwert ab und erhalten einen kleiner werdende Zeitwert, den Countdown
Den formatieren wir zu einem Zeitstring.
fertig
Gruß oldmax
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!