Interfaz:Mostrar


([N1] robertocofiex) #1

NO se como se usa eso. Tengo un visor HTML que se llama CARGANDO con condicion visible de la variable local CARGANDO=1 en un formulario. Un botón que ejecuta un manejador con esto.

Set CARGANDO=1
Interfaz: Mostrar(CARGANDO)
Esperar 10000
Set CARGANDO=0
Interfaz: Ocultar(CARGANDO)

Debería al pulsar el boton aparecer el visor CARGANDO durante 10s y ocultarlo. Pues no funciona ¿Porque?
El objetivo es sacar un mensaje mientras se sube un fichero binario…

Gracias Saludo.s


([N3] pacosatu) #2

Hola robertocofiex.

Es un comportamiento implícito de Velneo. El Interfaz no se refresca mientras se está ejecutando un proceso, es decir, los efectos en el Interfaz solo se ven cuando termina el proceso. En este caso Mostrar y Ocultar dentro del mismo proceso no tendrá efecto visual.

Sin embargo, prueba a insertar antes de la línea “Esperar 10000” el comando Mensaje (“Cargando”,Información,1,).
El comando Mensaje parece que sí refresca el Interface.

Pruébalo
Saludos
Paco Satué


([N3] pacosatu) #3

Hola robertocofiex.

Existe una función JavaScript que sí refresca el Interface cuando estamos ejecutando un proceso o manejador de evento.
Es la función theApp.processEvents() que procesa los eventos que haya en la cola de la aplicación, excluyendo los de entrada de usuario (teclado, ratón…).

Así que sustituye el comando Mensaje(…) por “Set (LOK, /JAVASCRIPT/theApp.processEvents())” y listo.

Saludos
Paco Satué


([N1] robertocofiex) #4

Gracias Paco, Maquina, pero tengo un problema.

No entiendo como pone lo que me dices “Set (LOK, /JAVASCRIPT/theApp.processEvents())”

Esto es en la instrucción SET o en un evento javascript, no lo entiendo…

Perdona el abuso pero ¿ me pondrías un detalle de las instrucción?

Gracias.


([N3] pacosatu) #5

Hola robertocofiex.

/JAVASCRIPT/ es la notación que emplea Velneo para indicar que se ha usado una fórmula Javascript.
El comando SET asigna un valor a LOK usando una fórmula Javascript (ver imagen adjunta).

No siempre es posible hacer esto. En este caso sí porque tenemos acceso al objeto theApp desde la fórmula javascript.

Saludos
Paco Satué



([N1] robertocofiex) #6

Muchas gracias, lo pruebo…


([N1] robertocofiex) #7

Bien, hasta ahora todo correcto, quiero hacer un efecto loader cuando subo un fichero binario al servidor que puede ser mas o menos grande. Tengo un código HTML con CSS que muestra un efecto cargando. Cuando ejecuto para que se ejecute todos los procesos correcto, pero el script del HTML se para…

En conclusión, es todo perfecto para mostrar una etiqueta o cualquier control estatico, rizariamos el rizo si se continuara ejecutando el script, también falta probar con un gif animado.

Alguna idea, Gracias…


([N3] pacosatu) #8

Hola robertocofiex.

Prueba a ejecutar el comando que carga el fichero binario al Server en un plano de ejecución diferente al que muestra el visor HTML.

Los pasos serían:

  • Ejecuta en 2º plano el proceso que carga en el Server el fichero binario.
  • Ejecuta en 1º plano el proceso entretenedor que muestra un CSS animado en el Visor HTML.
  • El proceso en 1º plano inicia un bucle de espera ejecutando en cada bucle theApp.processEvents() para refrescar el Script.
    El bucle terminará cuando la variable global GFIN = 1.
  • El proceso en 2º plano fijará a 1 la variable global GFIN = 1 (semáforo) para indicar que la carga ha terminado.
  • El proceso en 1º plano termina el bucle cuando GFIN = 1 y oculta el Visor HTML.
  • Prevé que el bucle de 1º plano pueda salir en caso de error de carga.

No sé como se comportará el Visor HTML con la ejecución de theApp.processEvents().
Pruébalo.

Saludos
Paco Satué