Página 1 de 1

sobre treport

Publicado: Mié Jul 27, 2022 11:11 am
por Francisco Sanchez
Estoy tocando la treport para que pueda mandar directamente a startdocpdf. En el METHOD Adjust, cuando comprueba si el informe supera el ancho de la pagina - como es este caso - y él automáticamente lo pone en apaisado, en lugar de hacer un enddoc newdow, hago un reset de oDevice ( el startdocpdf solo debe hacerse una vez para que funcione y ya lo puse en el METHOD Run ), y parece que todo bien. Pero en el oTitle tengo 10 lineas a mostrar ( la primera es un titulo con un font distinto ) y me lo hace todo bien, pero pierde el contenido de la primera de las lineas y de la últma del otitle:aline....alguna pista?????

Re: sobre treport

Publicado: Mié Jul 27, 2022 1:21 pm
por Francisco Sanchez
He creado una PROPERTY para recoger el nombre y ruta del archivo PDF, y la he llamado cJobname_PDF . En el METHOD Run puse essto para pasar a pdf :

WITH OBJECT ::oDevice
:lPreview := ::lPreview
:cJobTitle := ::cJobName
IF Empty( ::cJobName_PDF )
:StartDoc()
ELSE
:StartDocPdf( ::cJobName_PDF )
ENDIF

EN EL method aDJUST hice este cambio para que pudiese pasar a apaisado automaticamente ( ahi en el caso de los pdf no se puede hacer enddoc y demas )

WITH OBJECT ::oDevice
nX := :PaperRes()[ 1 ]
IF ::nWidth > nX .AND. :nOrientation == poPORTRAIT .AND. ::lAutoLand
IF Empty( ::cJobName_PDF )
:EndDoc()
ENDIF

:nOrientation := poLANDSCAPE

::lOrientChg := .T.
IF Empty( ::cJobName_PDF )
:StartDoc()
ELSE
:Reset()
ENDIF
IF ::oPen == Nil
::oPen := TPen():New()
ENDIF
:oCanvas:oPen := ::oPen
ENDIF

Pero lo hace bien, crea el pdf, ademas lo ha puesto en apaisado peroo...... en el otitle se han perdido 2 lineas ( la primera y la ultima )

Re: sobre treport

Publicado: Mié Jul 27, 2022 7:45 pm
por ignacio
Hola,

Es imposible que funcione como pretendes ya que el informe se ajusta una vez para todas sus páginas y si se cambia la orientación, los resultados son los que indicas.

He modificado la clase para que sea más sencillo y todo consiste en poder crear múltiples informes que se pueden concatenar fácilmente. El control del número de página en los anidados es automático. Ejemplo:

Código: Seleccionar todo

 REPORT oReport ;
      TITLE "..." ;
      KEEP <<<<<<<<<<<<<<<<<<<<<<<<<<<
COLUMN ...
COLUMN ...
RUN REPORT oReport

REPORT oReport ;
      TITLE "...." ;
      TO PDF "c:\temp\test.pdf" <<<<<<<<<<<<<<<<<<<<<<<<<<<
COLUMN ...
COLUMN ...
RUN REPORT oReport
Nota: Cada página es un recurso GDI. Evita hacer miles de páginas ;-)

Estará disponible en la próxima versión de Xailer

Saludos