Ich hab da noch ein Demo auf meinem Github-Account liegen...
https://github.com/sx2008/Delphi-Tes...PeriodicAction
Es verwendet einen Timer um sekündlich die ablaufende Restzeit in Minuten und Sekunden anzuzeigen.
Wenn die Sollzeit erreicht ist wird eine Aktion ausgelöst (ein Beep+Fensterblitzer) und die neue Sollzeit in der Zukunft wird errechnet.
Vielleicht sollte man zuerst die neue Sollzeit ausrechnen und dann die Aktion starten damit es genauer wird.
Einfach die Zeilen
DoAktion;
und
CalcNextAction;
vertauschen.