Ver Mensaje Individual
  #2  
Antiguo 31-01-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Reputación: 22
ixMike Va por buen camino
Bueno, según cómo hagas el borrado. Si utilizas la API SHFileOperation, pues con que se muestre la ventanita de progreso y le des al botón "cancelar" sobra.

Ahora, si lo que haces es un bucle para ir borrando los archivos según los encuentras, lo que has de hacer es meter (al principio o al final del bucle) esto:

Código Delphi [-]
var
  ...
  Cancelado: Boolean; //Variable global, al menos al formulario
  ...
begin
  Cancelado:=False;
  ....
  //while, for, repeat... lo que utilices
    begin
      ...
      Application.ProcessMessages;
      If Cancelado then Exit; //detiene la ejecución del código. Si sólo quieres salir del bucle, utiliza Break;
    end;  //final del bucle
  ...
end;

Además, coloca un botón "Cancelar" y en su evento OnClick, la línea Cancelado:=True;

El funcionamiento de esto es sencillo. Cancelado:=False es para inicializar la variable (hay que hacerlo cada vez que de les a "Borrar", para evitar que se pare después de que ya hayas cancelado una vez). Application.ProcessMessages sirve para procesar todos los mensajes que la aplicación tiene en cola (como pulsar en botón "Cancelar"). Si tras esto se ha pulsado el botón (Cancelado=True) entonces sale del bucle.

¡Pero atención! El ProcessMessages también toma otras acciones, como cerrar, minimizar... así que asegúrate de inhabilitar todo aquello que sea problemático antes de inicar el bucle, y después de reestablecerlo todo.

Espero que te sirva.


Salu2.
Responder Con Cita