PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → WB 14: ejecutar un proceso y mostrar al usuario que algo esta sucediendo...
WB 14: ejecutar un proceso y mostrar al usuario que algo esta sucediendo...
Débuté par Victoria Caballero, 11 mar. 2010 15:51 - 3 réponses
Posté le 11 mars 2010 - 15:51
Hola a todos,
Necesito ejecutar un proceso en una aplicacion web en WB 14 leyendo una
tabla de productos de más de 8.300 filas, entonces lo que quiero hacer
es crear una pagina donde el usuario sea capa de ver que el proceso
esta corriendo, tal vez mostrando un gif animado si es posible y el
nombre del producto que se esta procesando. El proceso es un poco
complejo o sea que tardara unos cuantos minutos así que es importante
que el usuario pueda ver que el proceso esta corriendo.
Para que se entienda mejor me gustaría hacer algo como lo que hacen las
paginas donde se buscan vuelos por ejemplo, donde ingresamos lo que
necesitamos buscar, presionamos OK y aparece una pagina o una ventanita
con una imagen en movimiento y algún texto indicando que se esta
buscando.
Intente hacer esto usando un gif animado pero no aparece animado sino
fijo totalmente, y tampoco pude mostrar el nombre del producto mientras
el proceso esta corriendo. Intente usar la propiedad “Automatic AJAX
indicator” que hay en el Tab “Details” en las paginas pero no funciono.
Así que mi pregunta es; como es la forma correcta de hacer esto?
Cualquier ayuda, truco, o sugerencia son bienvenidos.
Gracias de antemano.

Saludos,

Victoria Caballero
Posté le 12 mars 2010 - 10:46
Hola Victoria, yo lo que hago es lo siguiente: en la página tengo un cell que a su vez contiene el gif (en mi caso el relojito con las agujas dando vueltas), en las propiedades de la página en la pestaña 'Details', en la sección 'Automatic AJAX Indicator' en la lista 'Control' selecciona la CELL que contiene el Gif, de manera, que cada vez que realices el proceso te aparecerá el relojito automáticamente.
Lo que ya no se es para que vaya mostrándote los nombres que quieres que vayan apareciendo.
Saludos
Posté le 12 mars 2010 - 12:44
Hola Victoria,
Primero: Crea un Cell (CELL_Mensaje) al final de la página, fuera de otros cell y marca la propiedad: Automatic positioning when loading to avoid the scrollbars.

Segungo: En el Cell crea un static para los mensajes y añade el gif que servirá para la animación.

Tercero: En la función a ejecutar (FunciónServidor) del servidor debes ponerla como Ajax y debe devolver un valor con Result

Cuarto: En el código browser del botón que ejecuta la acción debes poner:
nRes is int
CellDisplayDialog(CELL_Mensaje)
STC_Texto ="Ejecutando proceso 1"
nRes=AJAXExecuteAsynchronous(FunciónServidor,LPfinFunciónServidor)

Quinto: Debes crear la función LPfinFunciónServidor en Local Procedures, esta función es la que se ejecutará cuando termine el proceso de FunciónServidor y en la definición de parámetros debes especificar unos fijos para poder recuperar el result de la FunciónServidor. Sería algo así:
PROCEDURE LPfinFunciónServidor(sRes,nRes)
nlRes is int

IF sRes = "1" THEN //Valor que devuelve FunciónServidor
STC_Texto ="Proceso 1 terminado, ejecutando proceso 2"
//por si quieres ejecutar otra función
nlRes=AJAXExecuteAsynchronous(FunciónServidorII,LPfinFunciónServidorII)

ELSE
STC_Texto ="Se ha producido un error..."
IMG_Image1..Visible =False //La del gif
BTN_Finalizar..Visible = True // Botón para finalizar, donde codifico en cód. browser CellCloseDialog(CELL_Mensaje) y en Server PageDisplay(index)
END

Si revisas en el foro de Skype (Windev) expliqué mis problemas con esto, el ajax tiene que ser asíncrono para poder visualizar los mensajes, ya que el evento tiene que finalizar para visualizar el mensaje. Con el gif también tuve alguna
cosa pero no me acuerdo ahora.

Saludos, nos vemos en Skype ;)
Posté le 12 mars 2010 - 15:08
Respecto al gif, para que funcione no lo debes comprimir.
;)
Saludos