Ti spiego:
Ho mostrato al cliente la barra di scorrimento e non gli piaceva
e visto che "IL CLIENTE HA SEMPRE RAGIONE" ha voluto sostituire la barra con un oggetto Animate ( con l'animazione della lente che gira non so se hai presente!! )
Quindi ho fatto in modo che quando l'utente lancia la procedura faccio

animate.visible := true

e quando finisce faccio

animate.visible := false

ma rimane sempre il problema di far passare un tot di minuti tra una spedizione di dati e l'altra ( non mi dilungo su cosa deve fare il programma!!)

quindi ho messo un ciclo

Adesso := Time();
Arrivo := Time() + (numero di minuti da aspettare)
while Adesso <= Arrivo do
begin
Adesso := Time();
end;

Questo ciclo farebbe al caso mio. Aspetto il tempo neccessario e poi proseguo con le istruzioni.
Ma questo mi occupa il 100% della CPU e l'utente deve avere la possibilità di terminare bruscamente l'applicazione in quel periodo di pausa premendo un bottone con su scritto "interrompi" che non riesco a premere.