Der Timer1 ist nicht dazu da um etwas zu zählen, schon gar nicht Ticks, sondern nur um den aktuellen Stand in Label1.Caption anzuzeigen:
Delphi-Quellcode:
uses
DateUtils;
//Die Unit DateUtils wird für die Funktion MilliSecondsBetween benötigt
var
T1: TTime;
//Globale TTime Variable um die Startzeit zu merken
procedure TForm1.FormCreate(Sender: TObject);
begin
// Interval ist für die Zählung irrelevant.
// Sagt nur aus wie oft die Anzeige aktualisiert wird.
Timer1.Interval := 1;
Timer1.Enabled := False;
//Timer1 zuerst deaktivieren
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Es wird nicht ab 0 gezählt.
// Die 0 ist nur dazu da um festzustellen ob T1 bereits einen Wert hat
T1 := 0;
Timer1.Enabled := True;
// Stoppur starten
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
TimeTemp: TTime;
begin
if T1 = 0
then // Wenn T1 = 0, dann ist es der ersten Durchlauf
T1 := Time;
// In dem Fall die Startzeit merken
// Nun die Differenz (Int64) zwischen Startzeit und aktuellen Zeit vergleichen.
// Bei TDateTime sind ganze Werte Daten, Nachkommawerte Zeiten.
// Deshalb TimeTemp durch 24 Stunden, 60 Minuten, 60 Sekunden und 1000 Millisekunden teilen
// Ergebnis ist eigentlich Zeit ab 00:00:00 Uhr
TimeTemp := MilliSecondsBetween(T1, Time) / 24 / 60 / 60 / 1000;
// Was angezeigt wird ist eigentlich die Uhrzeit, man merkt aber keinen Unterschied
Label1.Caption := FormatDateTime('
hh:nn:ss:zzz', TimeTemp);
end;