PrivDelay.Exec(cmd, t) регистрирует экшен, который через t мс выполнит команду cmd. Экшены выполняются "в фоне".

PROCEDURE ШагВперед;
BEGIN
...
PrivDelay.Exec('', 1000)
END;

ШагВперед будет сам по себе работать, на каждое его исполнение будет регистрироваться по экшену, которые в фоне, через секунду ничего делать не будут.

Вам надо что-то типа Exec('ШагВперёд', 1000)