repeat
application.ProcessMessages;
until now>t;
Just want to note that loop like this will max out 1 CPU core. It seemingly does nothing, but if you keep it on for longer time it can overheat laptops. Therefore i recommend sleep(1) inside
while now<t do begin
sleep(1);
application.ProcessMessages;
end;
edit: And not making it start in the first place if don't have to.