AutoCY, здравствуйте. Можно сделать на основе локальной переменной без использования таймерных функций и без внутренней переменной vrTime_1, вот пример секундного скрипта:
var
aTimer: Byte;
begin
if aTimer < 5 then
begin
aTimer := aTimer + 1; // каждую секунду увеличиваем счетчик на 1
if aTimer = 5 then // если прошло 5 секунд
a.Value := 0; // то обнуляем переменную
end;
end.
Т.е. идёт отсчет с нуля до 5, каждую секунду. На пятой секунде выполняется обнуление переменной "а". Такой таймер срабатывает только один раз. Если нужно другое поведение таймера, то опишите его, мы изменим пример.
Если рассматривать приведённый Вами пример, то переменная vrTime_1 имеет тип DateTime и проверять время нужно при помощи
функций для работы с датой/временем. Например:
if btn = true then
TimerStart(vrTime_1, 0); // включение и выключение таймера. Эта часть работает.
if SecondsBetween(vrTime_1.AsDateTime, 0) > 5 then
a.Value := 0;
Но учитывайте, что в Вашем примере запись нуля в переменную "a" происходит каждую секунду, если таймер больше 5 секунд. Может быть нужно предусмотреть остановку таймера, например:
if btn = true then
TimerStart(vrTime_1, 0); // включение и выключение таймера. Эта часть работает.
if SecondsBetween(vrTime_1.AsDateTime, 0) > 5 then
begin
a.Value := 0;
TimerReset(vrTime_1);
end;