Ver Mensaje Individual
  #1  
Antiguo 10-04-2008
Avatar de Black_Ocean
Black_Ocean Black_Ocean is offline
Miembro
 
Registrado: nov 2006
Posts: 128
Reputación: 18
Black_Ocean Va por buen camino
Ayuda: Necesito refrescar la aplicación MIENTRAS se copian archivos muy grandes

Hola estimados colegas de ClubDelphi,

Necesito que me echen una pequeña ayuda,

Pasa que las funciones CopyFile y SHFileOperation solo me refrescan el formulario después de haber terminado el copiado de un archivo, es decir:

Código Delphi [-]
  CopyFile(PChar('C:\Ejemplo_fuente.exe'), PChar('C:\Ejemplo_destino.exe'), False);
  Application.ProcessMessages;

Esta función es muy pobre y no sirve, puesto que MIENTRAS el copiado está en progreso, el formulario igual es inaccesible e innoperable (por ejemplo, con archivos muy grandes que toman más tiempo en copiarse).

En el caso con SHFileOperation, se refresca la UI de la API de Windows (el diálogo que se muestra cuando el flag es especificado), pero yo no quiero mostrar un diálogo de copiado de esa API, sino que un formulario que yo mismo hice para mostrar el progreso (esto es el progreso en bytes), pero, el problema es que MIENTRAS se está copiando un archivo grande (por ejemplo, de 300 MB). La aplicación queda congelada y el usuario no puede mover el formulario. Sólo cuando termina de copiar se refresca por la especificación de Application.ProcessMessages en la siguiente línea, pero cuando comienza a copiar otro archivo grande, nuevamente hay que esperar a que termine el copiado para que el formulario reaccione.

¿Cómo se puede solucionar este problema en forma eficiente, sin componentes, etc?

Saludos y de antemano gracias amigos como siempre.

Última edición por Black_Ocean fecha: 10-04-2008 a las 03:44:23.
Responder Con Cita