Das ist nicht so schwer.
Delphi-Quellcode:
procedure Uhr_starten;
var
tick : extended;
begin
tick := Now + // Now ist eine Funktion zum Holen der Systemzeit
1 / 3600; // eine Sekunde draufrechnen
// hier die Uhr starten
repeat
while (Now - tick) < 0 do sleep(10); // in 10 Millisekundenschritten warten bis eine Sekunde um ist
tick := tick + 1 / 3600; // wieder eine Sekunde weiter gehen
// Uhr neu zeichnen
Application.ProcessMessages;
until SpeedButton1.Down;
Zur Erläuterung:
- tick beinhaltet die Zeit der
nächsten Sekunde
- Application.ProcessMessages; arbeitet Ereignisse ab, die (für hier) den StopButton abfragen lässt, Oberfläche neu zeichnet ... das kann etwas dauern, daher die Konstruktion mit der Zeit in der Zukunft
- jetzt der StopButton: hier SpeedButton1 mit folgenden wichtigen Eigenschaften allowallup := true und groupindex > 0
Ich hab den Code nicht getestet, aber es soll ja auch noch was übrig bleiben
.
Gruß David