• Domingo 17 de Noviembre de 2024, 23:23

Autor Tema:  Filesystemobject Mostrar Tamaño De Copiado  (Leído 1435 veces)

Sagutxo

  • Miembro MUY activo
  • ***
  • Mensajes: 320
    • Ver Perfil
Filesystemobject Mostrar Tamaño De Copiado
« en: Sábado 24 de Mayo de 2008, 21:57 »
0
Salu2.

ValOpciFiles es una var FileSystemObject


¿Existe alguna forma de saber si este comando ha terminado de copiar?
o aún mejor, ¿puedo bloquear el formulario mientras termina de copìar?
ValOpciFiles.CopyFolder OrigenN.Text, ValCarpeta

Gracias.
 :smartass:  :comp:  :smartass:
Mi mujer tiene un físico bárbaro!!!. Einstein.

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Filesystemobject Mostrar Tamaño De Copiado
« Respuesta #1 en: Domingo 25 de Mayo de 2008, 10:02 »
0
No conozco si existe una forma de conocer si ese proceso de copia ha terminado. Pero puedes usar un método alternativo un poco más laborioso pero que te permite más control.  El otro método es copiar recursivamente cada subcarpeta y fichero contenidos... e ir mostrando el progreso de avance.

Para ello puedes usar la colección Folders y Files de scripting.

Es bueno usar 2 rutinas para hacer eso mismo, en función de si el tamaño es grande o pequeño y por ello el tiempo empleado.

Si por ejemplo el copiado es interno a tu aplicación y no como resultado de una acción del usuario tal como lo haces iría bien ya que se supone que la carpeta que vas a copiar sea del programa y no tenga un gran tamaño.

Bloquear una aplicación completamente mientras se espera a terminar un proceso, no es lo deseable, desespera al usuario, sin embargo es necesario si la aplicación necesita que se finalice la operación en curso para poder continuar, en dicho caso lo ideal es ir informando del progreso de la acción o de otro modo el usuario pueda creer que se ha colgado. Si el progreso tiene un trato porcentual, muestra una barra de progreso, si no se sabe a ciencia cierta cuando va a terminar porque hace una llamada asíncrona no controlada por el programa, entonces activa una animación antes de la llamada y desactiva la animación después de la llamada. Para la animación puedes usar el objeto animation que puedes agregar del componente: 'windows Common controls 2.6.0' ó 2.6.5... en la carpeta 'tools' de Visual Studio 6.0 busca los archivos '.AVI' y elige el que prefieras o crea tu mismo uno....

En vez de bloquear enteramente el formulario, mira de ver si es suficiente con bloquear ciertos controles que se vean afectados hasta que el proceso no termine, para hacer esto de una forma fácil y rápida incluye todos esos controles en un mismo contendor (o contendedores dentro del mismo contenedor), así por ejemplo si empleaste un sstab y estaban en la fiche 3, podrías hacer

Código: Text
  1.  
  2. sstab1.tabenabled(3)=false ' desactiva la ficha que tiene los controles que no deseamos que sean tocados
  3.      ''''' iniciar una forma de progreso
  4.      ''''     iniciar el proceso que se desea atender
  5.      '''' din indicador de progreso
  6. sstab1.tabenabled(3)=true ' reactivar el contenedor
  7.  
  8.  
El contenedor pueder ser igualmente un frame o un picturebox o si está todo en un formulario y nada más, pués también.

En cualquier caso un bloqueo total 'mosquea' mucho a los usuarios, ya que da la sensación de que están haciendo algo 'malo' o que se ha colgado... yles tienta a reiniciar el computador, con la posible pérdida de ficheros que luego le imputarán a tu programa (salvo que el usuario final seas tu mismo).
«Ma non troppo»
----> ModoVacaciones = False<----