Ver Mensaje Individual
  #2  
Antiguo 06-08-2003
nachoasensio nachoasensio is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga
Posts: 61
Reputación: 22
nachoasensio Va por buen camino
Hola:

Para que el bucle se pare y atienda los mensajes de windows, puedes hacer en su interior:

Application.ProcessMessages;

Ahora bien, si tu bucle se repite muchas veces y el proceso que se realiza en su interior es muy rápido, esta llamada te lo va a enlentecer mucho. En ese caso es mejor que hagas algo como:

Cont := 0;
Pulsada:= False;

while not (Pulsada) do
begin

// Aquí iría tu proceso
.
.
.

// Sólo se llama a ProcessMessages una vez de cada 100
// iteraciones
if (cont mod 100) = 0 then
begin
Application.ProcessMessages;
end;

INC(cont);
end;





El código del botón Cancelar sería, simplemente,

Pulsada := True;


donde "Pulsada" sería una variable global.

Un saludo.
Responder Con Cita