Casillero y Visor HTML


([N1] rid0406) #1

Creo nuevamente un foro sobre esto porque lo que he encontrado no me ha servido ninguna solución.
Desde un formulario sin origen, lanzo una búsqueda y muestro un casillero, el casillero muestra un formulario que contiene un visor html.

En el formulario que contiene el visor html, desde el Post-Init lanzo este código que me rellena el visor

var visor = theRoot.dataView().control(“CTRL_VISOR_HTML”);
var ruta = theRegisterIn.fieldToString(“RUTA”);
visor.setSourceCode(“img src =file:///” + ruta + " height=140 width=180"); //Lo pongo así porque sino no se ve el código
visor.reload();

Pues bien, el casillero me sale en blanco hasta que le entro en modificar una casilla, le he puesto el mismo formulario, al abrirlo individual me reconoce la foto y me la muestra, y al volver al casillero curiosamente me la muestra también, es como si se cargase en cuanto entro individualmente.

La cosa es que para que me muestre todas las fotos en el casillero debo entrar una a una primero, y mi pregunta es:
¿Como o desde donde recalculo el casillero para que me muestre todo al abrirlo?

Leí este foro de hace ya un par de años pero que no tiene respuesta y supongo que ahora con las nuevas versiones abra alguna.
Enlace a foro

Gracias por vuestra ayuda
Att Daniel


([N3] pacosatu) #2

Hola Daniel.

Como ya habrás deducido no se puede usar un Control visor HTML en un Casillero.
La razón es que el Casillero pinta una instantánea (imagen pixel) de cada formulario en cada casilla. La instantánea se realiza seguramente antes del evento On Show del formulario. Si en el momento de la instantánea algún control no se ha pintado todavía, entonces dicho control no aparece en la instantánea.

El control Visor HTML pinta su contenido de forma asíncrona a la ejecución del formulario y por eso no se puede usar en un casillero. Lo mismo pasará con otros controles asíncronos como las Rejillas.

Cuando haces doble click sobre una casilla el formulario se ejecuta completamente y todo se visualiza correctamente.

Puedes probar a poner un retardo después de la línea visor.reload(), aunque dudo que funcione.

Saludos
Paco Satué


([N1] rid0406) #3

Bueno gracias nuevamente Paco

Mi solución ha sido en lugar de usar el casillero, utilizar en el propio html el comando
<!–<table><tr><td><!–img src=“ruta_img”–></td>/tr><table>–>, acomodado bien me muestra de la misma forma que los casilleros las imágenes.

Ahora, leí en otro foro algo así como que el VISOR HTML se refrescaba continuamente, no le preste mucha atención pero ya que estamos, ¿es mejor cargarlo desde una variable en VELNEO en el contenido o desde javascript dejando el visor en blanco?.

Gracias por la info
Att Dani


([N3] pacosatu) #4

Hola Dani.

Efectivamente, a efectos visuales el Casillero de Velneo es como una TABLA HTML con una imagen del formulario en cada CELDA y sensible a los eventos de ratón Click y DobleClick.

Para evitar el refresco contínuo del Visor HTML deja la propiedad Contenido en blanco y sigue usando la función del API setSourceCode().

Saludos
Paco Satué


([N1] rid0406) #5

Perfecto, muchas gracias Paco


([N4] info) #6

Hola tengo el mismo problema, no entiendo muy bien como has hecho
utilizar en el propio html el comando
<!–<table><tr><td><!–img src=”ruta_img”–></td>/tr><table>–>
¿Cómo añades la lista de salida al formulario con el HTML?

salu2
Miguel
Ciberideas


([N4] info) #7

Bueno creo que ya me voy aclarando
¿Es posible capturar el raton Click DobleClick en el formulario al pinchar en una de las imágenes del HTML?
salu2
Miguel