Autor |
Mensaje |
guadafan
Aprendiz
Registrado: Agosto 2012
Mensajes: 81
Edad: 49 Ubicación: Alcalá de Guadaira (Sevilla)
|
Re: ¿Cómo Mantener Una Animación En "background"?
No es muy buena idea porque ahora sale el 100% tras pulsar el botón y el usuario va a creer que ya ha acabado de convertir.
Mira el vídeo.
PD. Subo de nuevo porque al hacer el vídeo he detectado un bug (faltaban unas comillas).
Descripción: |
|
Descargar |
Nombre del archivo: |
Conversor de im??genes.tar.gz |
Tamaño: |
50.52 KB |
Descargado: |
27 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Conversor de im??genes.tar.gz |
Tamaño: |
50.52 KB |
Descargado: |
27 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
Conversor de im??genes.tar.gz |
Tamaño: |
50.52 KB |
Descargado: |
27 veces |
|
#11 Martes, 04 Abril 2017, 21:32 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: ¿Cómo Mantener Una Animación En "background"?
Guadafan:
Tienes mal puesto el contador:
For Each archivo In lista_de_archivos
Print archivo
contador += 1
FMain.progreso(contador)
Print "comando: " & "convert -density 300 -compress lzw " & "'" & archivo & "'" & " " & "'" & ruta & "/" & File.BaseName(archivo) & "-%03d.tiff" & "'"
If File.Ext(archivo) = "pdf" Or File.Ext(archivo) = "PDF" Then
Shell "convert -density 300 -compress lzw " & "'" & archivo & "'" & " " & "'" & ruta & "/" & File.BaseName(archivo) & "-%03d.tiff" & "'" To salida
Else
Shell "convert -density 300 -compress lzw " & "'" & archivo & "'" & " " & "'" & ruta & "/" & File.BaseName(archivo) & ".tiff" & "'" To salida
Endif
Print salida
Next
Deberias poner el contador despues de haber ejecutado el "convert":
For Each archivo In lista_de_archivos
Print archivo
Print "comando: " & "convert -density 300 -compress lzw " & "'" & archivo & "'" & " " & "'" & ruta & "/" & File.BaseName(archivo) & "-%03d.tiff" & "'"
If File.Ext(archivo) = "pdf" Or File.Ext(archivo) = "PDF" Then
Shell "convert -density 300 -compress lzw " & "'" & archivo & "'" & " " & "'" & ruta & "/" & File.BaseName(archivo) & "-%03d.tiff" & "'" To salida
Else
Shell "convert -density 300 -compress lzw " & "'" & archivo & "'" & " " & "'" & ruta & "/" & File.BaseName(archivo) & ".tiff" & "'" To salida
Endif
Print salida
contador += 1
FMain.progreso(contador)
Next
De esa manera no marcara el 100% cuando inicia el trabajo de convert.
|
#12 Martes, 04 Abril 2017, 23:01 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: ¿Cómo Mantener Una Animación En "background"?
...por eso era lo de poner al menos algo que dé la impresión de que la aplicación no se ha quedado pillada.
Y que pasa si usas algo como:
Saludos.
|
#13 Miercoles, 05 Abril 2017, 16:42 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: ¿Cómo Mantener Una Animación En "background"?
Eso mismo fué lo que yo le pregunté, Tincho... pero sin respuesta.
=================== No podemos regresar
|
#14 Miercoles, 05 Abril 2017, 17:18 |
|
|
guadafan
Aprendiz
Registrado: Agosto 2012
Mensajes: 81
Edad: 49 Ubicación: Alcalá de Guadaira (Sevilla)
|
Re: ¿Cómo Mantener Una Animación En "background"?
Si cambio lo del contador, volvemos a la situación del principio, barra de progreso que se queda sin avanzar al principio (porque no tiene feedback) y aplicación que parece que está parada sin hacer nada. Por concretar el caso, cojo un PDF y lo intento convertir a TIFF.
Lo del Inc Application.Busy ya lo había comentado Shordi, pero el problema es que la ventana de conversión es pequeña y en cuanto sale el puntero del ratón fuera de la aplicación ya no surte efecto, encontrándonos de nuevo con el problema original.
|
#15 Miercoles, 05 Abril 2017, 17:25 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: ¿Cómo Mantener Una Animación En "background"?
Es imposible mantener una barra de progreso coordinada sin un feedback que la alimente.
Una salida es que la barra de progreso avance a trompicones según los archivos pendientes y sus tamaños. Eso es fácil, calculas el tamaño total de los archivos y le vas restando el de cada archivo procesado. Mientras la barra está parada, pones un pequeño literal de "Procesando " & nombre de archivo en marcha y dejas la animación dando vueltas.
O, más simple, olvídate de la barra de progreso y pon un timer que haga avanzar la animación. Al menos no se queda parado.
=================== No podemos regresar
última edición por shordi el Miercoles, 05 Abril 2017, 17:59; editado 1 vez
|
#16 Miercoles, 05 Abril 2017, 17:56 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: ¿Cómo Mantener Una Animación En "background"?
ok, comprendo lo del inc Application.busy.
Mira te propongo lo sigiente:
Tu agregas una cantidad de archivos, y luego los procesas. Bueno si tu archivo es mono pagina, un JPEG un TIFF etc sumas 1 en una variable integral, si tu archivo es multipagina, como por ejemplo un PDF sumas en la lista la cantidad de paginas, así al final tendrás un numero real de archivos que pasan por la "batidora". Y en el proceso vas descontando uno cada vez que haces una pasada y listo.
Saludos.
|
#17 Miercoles, 05 Abril 2017, 18:13 |
|
|
guadafan
Aprendiz
Registrado: Agosto 2012
Mensajes: 81
Edad: 49 Ubicación: Alcalá de Guadaira (Sevilla)
|
Re: ¿Cómo Mantener Una Animación En "background"?
Es imposible mantener una barra de progreso coordinada sin un feedback que la alimente.
Una salida es que la barra de progreso avance a trompicones según los archivos pendientes y sus tamaños. Eso es fácil, calculas el tamaño total de los archivos y le vas restando el de cada archivo procesado. Mientras la barra está parada, pones un pequeño literal de "Procesando " & nombre de archivo en marcha y dejas la animación dando vueltas.
O, más simple, olvídate de la barra de progreso y pon un timer que haga avanzar la animación. Al menos no se queda parado.
Claro, es el problema original, la barra no se mueve y quería una animación dando vueltas en el formulario "en paralelo", de ahí pasamos a lo de los observadores que recomendaba jsbsan.
Lo que comentas de los tamaño no es posible porque no sabemos el tamaño final de los archivos y si pongo un timer y llega al final sin haber realmente terminado de convertir...
|
#18 Miercoles, 05 Abril 2017, 18:17 |
|
|
guadafan
Aprendiz
Registrado: Agosto 2012
Mensajes: 81
Edad: 49 Ubicación: Alcalá de Guadaira (Sevilla)
|
Re: ¿Cómo Mantener Una Animación En "background"?
ok, comprendo lo del inc Application.busy.
Mira te propongo lo sigiente:
Tu agregas una cantidad de archivos, y luego los procesas. Bueno si tu archivo es mono pagina, un JPEG un TIFF etc sumas 1 en una variable integral, si tu archivo es multipagina, como por ejemplo un PDF sumas en la lista la cantidad de paginas, así al final tendrás un numero real de archivos que pasan por la "batidora". Y en el proceso vas descontando uno cada vez que haces una pasada y listo.
Saludos.
Lo del número de páginas del PDF lo podría conseguir, pero ... ¡Que no tengo feedback del conversor! No tengo ni pajolera idea de cuándo "convert" ha convertido una página o no.
|
#19 Miercoles, 05 Abril 2017, 18:20 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: ¿Cómo Mantener Una Animación En "background"?
...Lo del número de páginas del PDF lo podría conseguir, pero ... ¡Que no tengo feedback del conversor! No tengo ni pajolera idea de cuándo "convert" ha convertido una página o no.
Mira eso es relativamente sencillo.
Para el caso de los pdf tendras que hacer otro convert ..... pero con un Select por tipo de archivo te vale.
Saludos.
última edición por tincho el Miercoles, 05 Abril 2017, 18:43; editado 2 veces
|
#20 Miercoles, 05 Abril 2017, 18:42 |
|
|
|