Timingsachen machst du am besten mit GetTickCount(), weil Timer über Messages laufen und nicht genau sind. Du hast einen Startwert in einem Editfeld?
Delphi-Quellcode:
uses
math;
var
limit: longint;
TForm1.StartButtonClick(Sender: TObject);
begin
limit := gettickcount + StrToIntDef(Edit1.Text, 1000); // in ms
Timer1.Interval := 100;
Timer1.Enabled := true;
end;
TForm1.Timer1Timer(Sender :TObject);
var delta : longint;
begin
delta:= limit - gettickcount;
if delta < 500 then timer1.Interval := 20;
if delta >0 then
label1.caption := inttostr(floor(delta))+'sec verbleiben'
else
begin
Timer1.Enabled := false;
// dann hier gewünschten Code einfüllen
end;
end;