Está en la página 1de 18

Impresiones con GeneXus

1. Definicin de Reportes................................................................................................................................... 3
A.
CONCEPTOS
BSICOS........................................................................................................................................ 3
Modo.....................................................................................................................................................................
.... 3
Printblock..............................................................................................................................................................
.. 3
Lneas...................................................................................................................................................................
.... 4
Textos
(Labels)....................................................................................................................................................... 5
Atributos...............................................................................................................................................................
... 5
Variables...............................................................................................................................................................
... 5
Bitmaps, Lines, Rectangles...................................................................................................................................
6
Preferences (Modelo)............................................................................................................................................
6
Properties (Objeto)................................................................................................................................................
6
Salto
Pgina...................................................................................................................................................... 6

de

B.
COMANDOS...........................................................................................................................................................
7
PL (Page length)....................................................................................................................................................
7
MT (Margin Top) y MB (Margin Bottom):........................................................................................................ 7
Mb
y
Footer............................................................................................................................................................. 7
MT
y
Header............................................................................................................................................................ 7
Eject......................................................................................................................................................................
.... 7
PrnCMd (solo Modo Texto)................................................................................................................................. 8

NoSkip..................................................................................................................................................................
.... 8
Lineno...................................................................................................................................................................
.... 8
C.
REGLA
PRINTER.................................................................................................................................................. 10
Check paper size..................................................................................................................................................
11
2. Report Viewer (Versin 3.2.3)................................................................................................................... 14
INTERFASE............................................................................................................................................................
.... 14
Reportes en modo texto.......................................................................................................................................
14
Reportes en modo grfico...................................................................................................................................
14
CLIPPING...............................................................................................................................................................
..... 15

1. Definicin de Reportes
Aqu se dan definiciones, pero sobre todo consideraciones a tener en cuenta al momento de disear una
salida impresa.
La definicin de una salida impresa se puede disear desde un reporte o un procedimiento (y tienen las
mismas funcionalidades).
A. Conceptos Bsicos
Modo
Existen dos tipos de Reportes, para impresoras Texto (modo texto) y para impresoras Grficas(modo grfico).
Por defecto los reportes se crean en modo grfico, es posible convertirlo a modo texto (esto se configura en
la opcin Edit\Convert to). La conversin de modo implica modificacin en la configuracin del reporte. Por
esto al convertir un reporte dos veces (o un nmero par de veces, por ejemplo: grfico -> texto y texto ->
grfico), no se obtiene el mismo reporte del que se parti.
En los reportes modo texto varan algunas propiedades por ejemplo no hay uso de Fonts, ni orientacin en
PrintBlocks, pero en contrapartida hay un conjunto de comandos orientados al manejo de lneas (aunque es
posible y a veces necesario utilizarlos en Reportes Grficos).

Printblock
Es el control bsico para generar una salida impresa. Se puede seleccionar desde la paleta que contiene los
controles disponibles a insertar en un objeto (ya sea reporte o procedimiento).
Es posible visualizar o no los printblock seleccionando en el men View\PrintBLocks, anlogamente el cdigo
(con View\Code Blocks)
El ancho del printblock debera ser menor que el ancho del papel (especificado en el PB). De lo contrario es
posible que parte del reporte no se imprima (para visualizarlo, en ejecucin usar las opciones Design y Print
Preview del Report Viewer).
Si se intenta cambiar el tamao del papel a un valor con ancho menor que el PrintBlock desplegara el
mensaje:

Propiedades:

Estas son las nicas propiedades particulares:

- Color: no es tomada en cuenta (no es posible darle color a la salida con PB)
- Name: por el momento simplemente permite identificar el PrintBLock

Las siguientes propiedades son globales para todo el objeto, o sea que si se definen varios printblocks en un
reporte y se modifica por ejemplo el tamao del papel en uno, el cambio afectar a todos los printblocks del
objeto.

- Paper Este es el tamao y orientacin que se le pasa al driver de la impresora, si ste lo soporta ser la
que tome por defecto.
Se definen valores standard de papel (A4, Letter, A5, etc.), tambin se permite definir un Custom Size que
varia entre 1 y 20 (pulgadas). Aqu hay que tener en cuenta los chequeos con el tamao del printblock
definidos anteriormente.
El ancho del paper size se despliega en una regla (debajo de las Toolbars)
En reportes texto el paper size es tomado por el Report Viewer (visualizacin) pero no se toma en cuenta en
la impresin. La orientacin esta disponible pero tampoco es tomada en cuenta
El checkbox Windows Default (disponible a partir de Patch 1 de la versin 6 Ev 1) es anlogo a utilizar regla
printer y en printer setting seleccionar Printer default (toma los valores default de Windows, ver Regla
Printer). La idea es tener un acceso mas rpido a esta utilidad sin necesidad de utilizar la Regla Printer y
llevar el archivo gxprn.ini. Si se utiliza la regla Printer el valor seleccionado en el printblock es ignorado

- Font Determina el tamao por defecto de los atributos y labels. Eso es tomado en cuenta para determinar
el ancho de la lnea en reportes grficos (ver Lneas)

- Grid Es posible visualizar como una matriz de puntos el PrintBlock con la opcin Tool Bar\Form (toogle
Grid) o View Grid. Esto facilita la visualizacin en diseo. Tiene dos check box a chequear:
- Snap Grid: Alinea todos los atributos o variables a la grilla definida.
- Text Grid: Simula Screen de texto (por ello inhabilita Width y Heigth)

En reportes texto no esta habilitado (siempre tiene Text Grid)

Lneas
En reportes modo texto el concepto de lnea es claro, sin embargo en reportes grficos al existir la posibilidad
de modificar las Fonts (labels, atributos), no es tan sencillo definir la unidad de medida y con ello todos los
comandos que la involucran.
El ancho de la lnea se define con el mximo entre Labels y Font definido en el printblock. Esto a su vez tiene
una conversin segn el tipo de letra a pixels que depende del generador.

En el generador VFP Versin 6.0 se tomaba una lnea como el resultado de la funcin FontMetric aplicada a la
Font default. O sea que aunque se variara las font del printblock los comandos de lneas (por ejemplo Mb)
tomaban siempre la misma cantidad de pixels para cada lnea. Esto se mejoro para la versin 6 Ev. 1, se
agrego una preference "Text Grid Size" la cual tiene dos valores posibles:

GeneXus Grid: Calcula la lnea como el mximo entre font y label del printblock

"Courier New", 10: Calcula la lnea aplicando la funcin FontMetric (o sea


mantiene el comportamiento anterior)

En VB en la versin 6.0, hay un problema con la unidad de medida de lneas en los comandos Mt y MB. (ver
Comando)
El manejo de lneas en reportes grficos se mantiene para

tener compatibilidad con lo reportes texto definidos


a veces es necesario, por ejemplo para hacer un salto a una lnea esto es solo posible con
el comando Lineno. Otros comandos que involucran lneas como por ejemplo el Mt es
posible emularlo con un comando Header, el Mb con un footer (si es menor al Mb default,
ver Comandos).

En el caso de utilizar los comandos que involucran lneas en reportes grficos tener en cuenta lo definido
anteriormente y en la seccin Comandos

Textos (Labels)
Permite definir etiquetas en los printblocks. Si en un texto se escribe el string "{{Pages}}" en tiempo de
ejecucin despliega el nmero total de pginas (es necesario definirlo con mayscula). Esto es valido solo
para reportes modo grfico, en impresoras texto no se imprime
Para poder definir en un reporte "pagina X de Y", se debe referenciar a la variable standard &Page y a esta
etiqueta, o sea: "Pgina &pages de {{Pages}}"

Atributos
Permite desplegar cualquier atributo del Modelo, esto va a participar en la eleccin de la tabla base del
reporte o procedimiento.

Variables
Permite desplegar cualquier variable del objeto en el reporte. Al editar una variable es posible mediante la
propiedad Picture setear alineacin, convertir a mayscula, eliminar ceros, etc. Ocurre lo mismo con los
atributos pero solo en el ambiente de diseo es posible editarlo
Existen algunas variables Standard:

Line: Se utiliza para hacer la llamada a un reporte dentro de otro, pasando por parmetro &line al
programa llamado esta variable se encarga de decirle al llamador en que lnea debe continuar la
impresin

Page: Se utiliza tambin para hacer la llamada a un reporte dentro de otro. Esta variable se encarga de
decirle al llamador en que pgina debe continuar la impresin.

Output: Se usa para definir la salida del reporte. Los valores posibles son: PRN y SCR. Si adems se
define entre las propiedades del objeto la opcin Report Output, esta no es tenida en cuenta.
Estas variables estn pre-definidas en reportes y procedimientos, en Work Panels u otro objeto es necesario
definirla. Por ejemplo si se desea llamar un reporte que tiene la variable &Page como parmetro desde un
Work Panel al adicionar la variable desplegara un mensaje que advierte que es una variable standard y por lo
tanto tiene valores predefinidos.

Bitmaps, Lines, Rectangles


Es posible insertar imgenes, dibujar lneas, rectngulos y modificar sus propiedades (width, name, etc)

Preferences (Modelo)
Existe un conjunto de Preferences a nivel del modelo que refieren exclusivamente a la Impresin y dependen
de cada generador
Por ejemplo Lan Printer, Report Viewer, Eject After Last Page (solo para FXP),Show printer Dialog, etc
Hay una preference (Printing Using Dll en VFP o Print Method en VB) que define la interfase de impresin o
sea si se utiliza el Report Viewer o el mtodo Nativo que ofrece el lenguaje. En el caso de VFP es posible
definir la Dll de impresin (que provee GeneXus) para reportes grficos y para reportes texto seleccionar
entre las dlls nativas de FoxPro o la Dll de impresin de GeneXus, mediante la preference "Text Mode Report
Use"

Properties (Objeto)

Existen propiedades de impresin que se setean a nivel de objeto, como:

Report Output:Define la Salida - solo a Pantalla


- solo Impresora
- despliega un dialogo al usuario,
Footer on Last Page, , etc.

Salto de Pgina
Este tema esta relacionado con el comando Eject, y con los valores que tenga el driver de la impresora. Es
posible configurar en reportes grficos el tamao de papel y los saltos de pgina mediante las propiedades
del printblock, En reportes texto participa el comando PL y no las propiedades del Printblock. Es posible
configurar estos seteos con la regla printer.

B. Comandos

PL (Page length)
Este comando setea el largo de pgina en reportes modo texto.

En modo grfico:
VFP ignora el PL.
VB ejecuta un salto de pgina mas all del tamao fsico de la pgina (esto puede ser til en el caso de
querer definir, por ejemplo, N recibos por hoja, facilita bastante la programacin setear el tamao de pgina)

La orientacin: Se debe definir en el printblock o en ejecucin con el driver. Hay que tener en cuenta que
si el reporte se define landscape (orientacin horizontal) se debe modificar el PL (esto no es posible
condicionarlo en el cdigo, pues se define en tiempo de ejecucin).
La orientacin obviamente no esta habilitada en reportes modo texto

MT (Margin Top) y MB (Margin Bottom):


Definen el margen superior y margen inferior del reporte. Se deben definir una sola vez de lo contrario toma
el primero definido.
Se mide en lneas, pero en el Generador VB de la versin 6.0 se mide en pixels, por lo tanto para obtener el
valor en lneas hay que multiplicar el valor deseado por 15 (sino se modifica ninguna Font default)
El Margin Top default es 0,
El Margin Botton default son 6 lneas y dentro se encuentra el footer

Mb y Footer.
El footer se define dentro del Mb, por lo tanto como el Mb default es 6 lneas, cualquier Footer mayor que
este valor puede truncarse o salir fuera de los limites de la pgina, para esto hay que definir un MB mayor (el
MB esta dentro del Pl , ver Figura). Esto es vlido en reportes grficos y reportes texto

MT y Header
El Header esta fuera del Mt, dado que el Margin Top Default es 0.

Si dentro de un cabezal se van a desplegar atributos, es necesario definir el Header dentro de un For each.
En el caso en que el for each no seleccione ningn registro, tampoco se desplegara el cabezal (tenga o no
atributos)

Eject
Enva un comando Eject (salto de pgina) directo a la impresora. El tamao de papel es tomado
generalmente del driver. Es posible en reportes texto setear este tamao con un comando directo a
impresora (esto depende de la impresora, ver comandos Prncmd).
Tambin es posible modificar el comportamiento de los comandos Eject con la Regla Printer(ver Regla Printer)

PrnCMd (solo Modo Texto)


Permite enviar comandos directamente a la impresora. Los comandos son particulares de la impresora, pero
hay algunos que son bastante standard, como por ejemplo:

\015 Letra condensada


\018 Letra Normal
\027 C XXX Largo de Pgina en lneas

Para utilizar este comando es necesario saber como activar y desactivar los comandos. Por ejemplo:

Header
PRNCMD \015
printblock
PRNCMD \018
End
printblock
Footer
PRNCMD \015
Printblock
PRNCMD \018
End

En el generador VB es necesario definir un PrintBlock antes de definir el PrnCmd, porque sino es ignorado.

NoSkip
Este comando evita el salto de lnea o mejor dicho el salto de bloque.

Lineno
Salta a la lnea con el nmero especificado. Tener en cuenta para reportes grficos lo especificado en la
seccin Visin Gral., Lneas.
Si se especifica un nmero de lnea mayor que el definido en PL (o el PL default 66), se saltara a la primera
lnea de la pgina siguiente.
Si se especfica saltar a una lnea menor que la lnea actual se posicionar en la lnea indicada de la pgina
actual. Antes los reportes modo texto se enviaban directamente a la impresora y dependiendo de la lnea
actual, si su valor era mayor o menor al nmero de lnea definido con el comando Lineno saltaba a la
siguiente pgina o no. Esto es posible para reportes texto si se utiliza como modo de impresin el nativo del
lenguaje (no el Report Viewer, ver Preferences). Ahora utilizando el Report Viewer es posible volver hacia
atrs en la pgina o saltar de pgina (usando el comando eject)
A partir de la versin 6 Ev 1 el conteo de lneas comienza en lnea 0, o sea para imprimir al inicio de la hoja
se debe definir lineno 0

C. Regla Printer
Nota : No es valido para el Generador FPW.

A partir de las versiones de los generadores en los que se libere la versin 3.0 del Report Viewer, se cambi
la implementacin de la regla printer. Con anterioridad, si exista algn reporte o procedimiento con dicha
regla se creaba el archivo GXPRN.INI en el directorio del modelo, en tiempo de generacin de dicho objeto.

A partir de ahora esto no se hace mas, el archivo se crea en el momento de la ejecucin del programa
GXSETFRM. Este programa permite crear y modificar los diferentes FORMS (un FORM es una entrada en el
GXPRN.INI, con una determinada configuracin). Cuando un reporte con regla printer se ejecute, ir a buscar
al archivo una entrada con el mismo nombre que se le puso en la regla. De no existir ninguna entrada con
ese nombre, o de no existir el archivo GXPRN.INI, el reporte se tratar de imprimir a la impresora por default
de Windows.

Por ejemplo: se tiene un reporte con una regla: printer(FACTURAS), es necesario crear y configurar el form
FACTURAS. Se llama al programa GXSETFRM (por ejemplo desde un evento de usuario se hace:
call(gxsetfrm)), el que lee el archivo GXPRN.INI del directorio del modelo si este existiera, o de lo contrario
lo crea.

Cuando se ejecuta, aparece un dilogo de este tipo, con todos los FORMS existentes si los hubiera:

Check paper size


Se agrega la posibilidad de
controlar que el reporte que se
imprima en el tamao de pgina
que se selecciona en el momento
de imprimir, adems el control es
opcional
y
puede
habilitarse/deshabilitarse utilizando
la opcin "Check paper size".
En caso de que el control este
habilitado y el reporte (segn el

tamao de pagina de diseo) sea ms grande que el tamao de papel elegido para imprimir aparecer este
mensaje:

Notas:

Por defecto el control esta habilitado.

No es necesario utilizar la regla printer en el reporte para deshabilitarlo, simplemente alcanza con
ejecutar gxsetfrm y deshabilitarlo.

Recordar que es necesario incluir el gxprn.ini para que este seteo sea tomado en cuanta en las
maquinas de produccin, existe una opcin de setup wizard que lo permite.

Se puede dar de alta un FORM (aunque no este presente en ninguna regla PRINTER), se puede borrar y se
puede modificar. Al dar de alta un FORM (botn New) aparece el siguiente dilogo:

Form Name: Nombre del


FORM
(en
el
ejemplo,
FACTURAS. Esta configuracin
va a ser utilizada por todos
aquellos
reportes/procedimientos con
una
regla:
printer(FACTURAS)).

Opciones

Selected Printer

Si se tiene marcado el CheckBox de Default Printer entonces siempre se imprimir el reporte en la


impresora por defecto de la maquina que lo ejecute. Si se presiona el botn de Configure printer entonces
se seleccionara una impresora del administrador de impresin del windows.
Default printer: Indica si el FORM va a utilizar la impresora por default de Windows. Si se desmarca
esta opcin, se abre un dialogo que permite seleccionar y configurar alguna otra impresora entre las
definidas.

Printer Settings

Apply form settings

Se imprimir segn lo que se haya definido en el form (es decir segn lo que diga el GXPRN.INI).

Printer defaults

Se imprimir segn los valores por defecto que tenga la impresora seleccionada.

Show printer dialog

If Sent directly to printer

Solo se muestra el dialogo de impresin en el momento en que se imprime el reporte, cuando el


modo de salida del reporte es PRN, es decir directo a impresora. Esto se define en las propiedades
del objeto

Always

Se muestra el dialogo de la impresora cada vez que se enva el reporte a imprimir sin importar el
modo de salida.

Never

Nunca se muestra el dialogo de impresin.

Estas opciones definen el dialogo fuera del Report Viewer. Dentro de l siempre se despliega el dialogo
de impresin

Eject command (text mode)

Skip PL Lines

Cuando se recibe un comando eject se saltan tantas lneas como sea necesario hasta alcanzar la primer lnea
de la siguiente pgina. Se toma como tamao de pgina el valor definido por la regla PL o su valor por
defecto si no fue asignado.

Form feed

Cuando se recibe un comando eject este es enviado a la impresora, esto hace que se salte hasta la siguiente
pgina, en este caso es la impresora quien calcula la cantidad de lneas a saltar, lo hace basndose en el
tamao de pgina establecido por hardware o bien por algn comando propio de la impresora.

Instalacin o Configuracin

El archivo Gxprn.ini, donde se encuentran seteos de impresin (los forms definidos con el gxsetfrm, el paper
size, etc.), se crea en el directorio donde se encuentre la aplicacin (o en el Data del modelo si se ejecuta
desde GeneXus).
Si se elimina este archivo y se copia al directorio Windows se va a tomar este archivo (esto es til cuando se
desea desde clientes distintas correr una misma aplicacin instalada en un servidor y enviarla a distintas
impresoras o distintos formatos segn el cliente). Hay que tener en cuenta que esto funciona solo en el
directorio Windows no en el Windows\System
Si el Gxprn.ini se encuentra en ambos directorios se van a toman los seteos del Gxprn.ini del directorio de la
aplicacin.

2. Report Viewer (Versin 3.2.3)


Nota: No es posible utilizarlo con el Generador FPW, dado que la Rbuilder.dll es 32 bits.

Interfase
Reportes en modo texto
En las versiones anteriores, existan problemas diversos trabajando con reportes en modo texto, algunos de
ellos atribuibles a la utilizacin del driver Generic-Text only. Para solucionar dichos problemas, a partir de esta
versin dichos reportes son enviados directamente al puerto de impresin, sin utilizar el driver. Esto no
quiere decir que se imprimen sin utilizar el spool de Windows, los reportes entran en la cola de impresin
como cualquier otro listado, y se pueden ver en la lista de trabajos de impresin pendientes del driver
correspondiente.

Cuando se manda a imprimir un reporte desde la pantalla del Report Viewer, se despliega la siguiente
pantalla:

En la misma se permite elegir de entre los drivers definidos, solamente para determinar a que puerto de
impresin debe ser enviado el reporte. Tambin se puede seleccionar la cantidad de copias.

Reportes en modo grfico


En el caso de reportes grfico al imprimir desde el Report Viewer despliega segn la impresora seleccionada.

Por Ejemplo:

Clipping
Existe un problema con algunos drivers de impresin, con los cuales se podan recortar o truncar (clipping)
algunos campos. Se implement un cambio para evitar esto, a partir de la versin 3.0. Hay informacin
disponible acerca de este tema en: http://www.artech.com.uy/forum/tips/clippisp.htm
La forma ms cercana a imprimir lo mismo que se diseo es con una opcin que tienen algunos drivers la
cual enva las Font True Type como Bitmaps

Las Variables y atributos numricos son redondeadas a 2 decimales en el Report Viewer

Open /Close - Abrir o Cerrar archivos grabados previamente.

Save as - Un reporte es posible grabarlo en un archivo con extensin "gxr". Esta implementada una versin
beta para salvar a formato Rtf.

Go to Page - Permite posicionarse en la pgina especificada, desplegando el dialogo

Tambin se puede posicionar en otras pginas con:

Print preview Se puede seleccionar desde View/Print preview, o mediante el botn


. Permite
seleccionar una impresora de las definidas en Windows, y visualizar el reporte segn la configuracin del
mismo (tamao de papel, mrgenes, etc.).

Design Se puede seleccionar desde View/Design, o mediante el botn


igual a como fue definido en diseo.

. Permite visualizar el reporte

Zoom - Permite Maximizar a Minimizar el reporte entre los valores desplegados, o digitar el valor.El valor
oscila entre 25 y 250, Page Width : ajusta el ancho del reporte al ancho de la ventana (para que se visualice
en la ventana), Whole Page: ajusta Ancho y alto del reporte a la Ventana.

También podría gustarte