Da es sich hier ja um eine Aufgabe für Anfänger handelt und diese mit den bisher vermittelten Kenntnissen lösbar sein sollte, glaube ich, dass der Einsatz von Standard-Komponenten völlig ausreichen muss.
Anzeige in Millisekunden wird wohl so gemeint sein:
Label1.Caption( FormatDateTime( 'hh:nn:ss.zzz', Dauer ) );
Die Anzeige jede Millisekunde zu Referaten ist bestimmt nicht gefordert, da dies a) technisch nicht möglich und b) absolut unnötig ist. Das Auge ist mit 25 Bildern pro Sekunde schon glücklich wozu also mit 1000 Bildern pro Sekunde stressen (Auge wie Computer)
Somit würde ich Timer-Interval auf 40 setzen (das ist auch schon hart) und im Timer-Event dann das Label aktualisieren lassen:
Label1.Caption( FormatDateTime( 'hh:nn:ss.zzz', now - Start ) );
Damit der Timer losläuft und anhält im OnClick-Event
Delphi-Quellcode:
Start := now;
Timer1.Enabled := not Timer1.Enabled;
Im groben sollte es das gewesen sein. Da kann man noch etwas feilen, aber wir wollen es ja auch nicht komplett bauen