Página 1 de 1

Ver barra de progreso mientras se crea un informe

Publicado: Mié Dic 16, 2020 1:23 pm
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.

Re: Ver barra de progreso mientras se crea un informe

Publicado: Jue Dic 17, 2020 12:34 pm
por ignacio
Hola,

Utilice los eventos OnProgress, OnProgressStart y OnProgressStop.

Saludos

Re: Ver barra de progreso mientras se crea un informe

Publicado: Vie Dic 18, 2020 11:27 am
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.

Re: Ver barra de progreso mientras se crea un informe

Publicado: Vie Dic 18, 2020 1:40 pm
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

Re: Ver barra de progreso mientras se crea un informe

Publicado: Vie Dic 18, 2020 5:00 pm
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

Re: Ver barra de progreso mientras se crea un informe

Publicado: Lun Dic 21, 2020 11:42 am
por Alfonso
Gracias lo pruebo.