Completando un poco lo que te indica Al González, para lograr el efecto de pausar el ciclo y luego
continuar podrías intentar algo como esto:
Código:
var
I: Integer;
begin
Pausa := false;
for I := 1 to 50000 do
begin
while Pausa do
Application.ProcessMessages;
{ Aquí el proceso que realices }
Application.ProcessMessages;
end;
end;
Pausa sería una variable en tu formulario que inicializas a false al comienzo del ciclo for de manera
que el ciclo while no se ejecuta.
El segundo ProcessMessages permite procesar otros eventos. Uno de ellos podría ser el click de un botón
"Pausa" en donde pones la variable Pausa a true. Esto hará que la condición del ciclo while sea cierta y,
como verás, es un ciclo que no terminará mientras Pausa sea true de manera que el ciclo for queda
"suspendido".
El ProcessMessages dentro del ciclo while permitirá que se sigan procesando los mensajes, por ejemplo el
click de un botón "Continuar" en donde pondrías la variable Pausa a false haciendo que el ciclo while
termine y continúe el ciclo for.
Por otra parte, pienso que una solución "más seria" y sólida sería utilizar threads para ejecutar lo que
haces dentro del ciclo for.
// Saludos