In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Ver barra de progreso mientras se crea un informe

FastReport for Xailer & [x]Harbour (English/Spanish)
Responder
Alfonso
Mensajes: 33
Registrado: Lun Dic 14, 2020 10:21 am
Ubicación: Santurtzi
Contactar:

Ver barra de progreso mientras se crea un informe

Mensaje por Alfonso »

Hola a todos:

He visto que este tema ya se planteo en septiembre del 2018.

Al entrar para ver la respuesta que facilita Ignacio, no esta disponible.

¿Es posible habilitarla de nuevo?

Gracias de antemano por la ayuda.
--
Un saludo
Alfonso
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Ver barra de progreso mientras se crea un informe

Mensaje por ignacio »

Hola,

Utilice los eventos OnProgress, OnProgressStart y OnProgressStop.

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Alfonso
Mensajes: 33
Registrado: Lun Dic 14, 2020 10:21 am
Ubicación: Santurtzi
Contactar:

Re: Ver barra de progreso mientras se crea un informe

Mensaje por Alfonso »

Gracias por responder,

He consultado la ayuda de Xailer, para el evento OnProgress de FastReport.

Pero no encuentro ningun ejemplo en Samples de Xailer.

¿Podrias facilitarme algun codigo de ejemplo?

Gracias de antemano.
--
Un saludo
Alfonso
Alfonso
Mensajes: 33
Registrado: Lun Dic 14, 2020 10:21 am
Ubicación: Santurtzi
Contactar:

Re: Ver barra de progreso mientras se crea un informe

Mensaje por Alfonso »

Hola de nuevo:

Despues de investigar y hacer pruebas creo que he encontrado una solucion.

Solo me queda resolver una cuestion, querria usar una barra de progreso en el Metodo FastReportProgreso, en lugar de una etiqueta, tengo el dato del numero de pagina con el parametro nProgress, pero ¿como calcularia el total de paginas de un informe para que la barra de prograso funcione?

Comparto el codigo por si a alguien le resulta util.

WITH OBJECT ::oFr:= TFastReport():New()
:cLanguage := "Spanish"
:AddDataSet( "LINVENTA", ::oMemConsulta )
:Create()
:LoadFromFile( cFile )
:OnProgress:= "FastReportProgreso" // Llamada al Metodo creado mas abajo
:PrintOptions:SetShowDialog(.t.) // Muestra dialogo de la impresoras antes de imprimir
:PrepareReport(.t.) // Prepara informe sin mostrarlo
Self:SetFocus() // Refresco el foco del formulario, principal porque en ocasiones al crear el informe se pierde.
// Muestra informe previamente preparado, OJO si existiera otro informe previo uniria los dos
// no sucede en nuestro caso porque hacemos un :END() para cerrar el informe
:ShowPreparedReport(.t.) // Muestro el informe
:End() // Cierra informe
END WITH

// ------------------------------------------------------------------------------------
// Refresca una etiqueta en el formulario con el progreso del informe
// ------------------------------------------------------------------------------------
METHOD FastReportProgreso( oSender, nProgressType, nProgress ) CLASS TFrmEstGeneralClienteVendedorArticulo

::oLblArchivo:cText:= IIF(nProgressType==0,"Creando",IIF(nProgressType==1,"Exportando","Imprimiendo"))+" "+"Pagina: "+ToString(nProgress)

RETURN Nil
--
Un saludo
Alfonso
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Ver barra de progreso mientras se crea un informe

Mensaje por ignacio »

Buenas tardes,

Ni siquiera el propio FastReport sabe cuantas páginas va a tener el documento hasta que no lo realiza. Simplemente hago dos procesos:

1) Llame a TReport:PrepareReport() y en el evento OnProgress() anote la página máxima ( nProgressType == 0 ). Para este proceso deberá mostrar un simple reloj de arena. No obstante es un proceso bastante rápido

2) LLame a Teport:Print() y en el evento OnProgress() ya podrá mostrar la ProgressBar indicando como valor nMax, la página calculada en el proceso (1)

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Alfonso
Mensajes: 33
Registrado: Lun Dic 14, 2020 10:21 am
Ubicación: Santurtzi
Contactar:

Re: Ver barra de progreso mientras se crea un informe

Mensaje por Alfonso »

Gracias lo pruebo.
--
Un saludo
Alfonso
Responder