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; ...
begin
Cancelado:=False;
....
begin
...
Application.ProcessMessages;
If Cancelado then Exit; end; ...
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.