GrialPrint

De GrialWIKI

Introducción al Framework Grial

Índice


Contenido

GrialPrint

Controles con sufijo: _gpr

Descripción General

El control GrialPrint se utiliza para la impresión de documentos permitiendo modificar propiedades que describen cómo se va a visualizar el mismo.

Archivo:Grialprint.jpg

Descripción de los métodos que interactuan al imprimir o visualizar un documento.

  1. ButtonClicked: Se dispara cuando el usuario pulsa un botón en el control. Este evento por lo general es utilizado para establecer las cabeceras y pie de páginas de una impresión, para establecer la posición de la hoja, entre otras cosas.
  2. PreDocumentPrint: Se dispara una única vez luego de seleccionar la impresora, determinar el tipo de papel (PrintPos_PageWidth, y calcular el ancho de la hoja y las posiciones de los márgenes(PrintPos_LeftMargin). Utilizar para cargar queries y datos necesarios para la impresión.
  3. PrintHeader Se dispara automáticamente antes de comenzar cada hoja
  4. PrintDocument: Este es el evento principal de impresión. Se dispara una vez por cada copia solicitada.
  5. PrintFooter Se dispara automáticamente al alcanzar la posición “PrintPos_Footer”
  6. PostDocumentPrint


Image:Flujo.GrialPrint.png

Ejemplo

En el siguiente ejemplo se supone que se ha agregado un control GrialPrint_qpr en un Formulario. Un control grialprint presenta la particularidad de tener incluidos encabezados y pié de páginas definidos de manera predeterminada para todas las impresiones en el sistema.

Por ejemplo al realizar una impresión se visualizará en la parte superior de la hoja un escudo, marca de agua, fecha y hora de impresión, nombre de la institución.

Al pie de página se podrá visualizar el usuario que lleva a cabo la impresión como así también el cargo asignado dentro del sistema, como por ejemplo operador, jefe, director, etc.

Cabe aclarar que mediante las propiedades relacionadas, es posible indicar que dichos encabezados y pie de página no sean impresos.

A continuación pasaremos a visualizar un ejemplo de código:

Private Type persona
  nombre As String
  apellido As String
End Type
 
'Cargamos datos
 
Dim personas(1 To 3) As persona
 
personas(1).nombre = "Federico"
personas(1).apellido = "Guillen"
 
personas(2).nombre = "Pedro"
personas(2).apellido = "Ramirez"
 
personas(3).nombre = "Laura"
personas(3).apellido = "Milciades"

En el evento ButtonClicked

Private Sub GrialPrint_gpr_ButtonClicked(ButtonCode As GrialPrint.GPR_BUTTON_CODE, Cancel As Boolean)
'Evito que use los encabezados default
With GrialPrint _gpr
    .PageHeader_Right = ""
    .UseFooters = False
    .PageHeader_Left = ""
    .UseHeaders = False
End With

PageHeader_Rigth hace referencia a la parte izquierda del encabezado de la hoja. Teniendo como valor predeterminado una marca de agua y fecha de impresión por ejemplo, los cuales serán visualizados automáticamente al momento de obtener la impresión. En el ejemplo anterior se indico de manera manual que contenga un valor = “” lo cual indica que no deberá visualizarse ningún encabezado izquierdo dentro de la hoja.

De la misma manera explicada anteriormente actúa PageHeader_Left con la diferencia de que generalmente el encabezado derecho está compuesto de un escudo de la provincia, el nombre de la misma y de la institución. Para el ejemplo también se solicita que eso no figure.

En el evento PrintDocument.

Private Sub GrialPrint_gpr_PrintDocument(Cancel As Boolean)
On Error GoTo ErrH
 
Dim i as integer
 
On Error GoTo ErrH
 
With GrialPrint_gpr
 
    .ReportTitle = "Título del Informe"
    .ReportSubTitle =  "Subtítulo del Informe"
    .ReportSecondaryTitle = "Título Secundario"
    .ClearCols
    .DefineCol "NOMBRE", "Nombre<vl>", 2000, AlignLeft
    .DefineCol "APELLIDO", "Apellido", 2200, AlignLeft
    .OpenBox "Detalle"
    .FontBold = True
    .WtColTitles
    .FontBold = False
    .BoxSepar ("Detalle")
 
 
     For i = 1  to 3
       .WtCol "NOMBRE", personas(i).nombre
       .WtCol "APELLIDO", personas(i).apellido, AlignLeft
       .Printer_Advance
       .BoxSepar ("Detalle")        
     Next 
 
    .CloseBox "Detalle"
    .WtColVLines
    .Printer_Advance
    .Wt 200, "Fin ejemplo.", 9000, AlignLeft
 
End With
 
Exit Sub
ErrH:
    MsgError GrialCont
    Cancel = True
    Exit Sub
End Sub

Resultado

Archivo:Resultadoimpresion.jpg

Referencia de Métodos

Wt

(Write)

Para realizar la impresión de un texto sencillo. Suponiendo que nuestro control se denomina GrialPrint_gpr tendríamos que escribir el siguiente código:

GrialPrint_gpr.Wt ( X As Single, Text As String, [Coldwith as Single], [Alignmode As Gpr_Alignmode_Enum = Align Default])

X: número que indica la posición dentro de la hoja en donde se imprime el texto.

Text: texto a imprimir.

Coldwith: (opcional) permite establecer el ancho de la línea.

Alignmode: (opcional) indica la alineación que deberá tener el texto.


En este ejemplo se solicita imprimir el texto a partir de la coordenada x = 200, en un ancho de 9000 y con alineación derecha.

 
  .Wt ( 200, FormatCurrecy(Total), 9000, Align_Right)

Printer_Advance

Este método es utilizado para avanzar a la siguiente linea.

Public Sub Printer_Advance(Optional ByVal CantLines As Single = 1)

Cantlines: cantidad de líneas a avanzar, es opcional, asumiendo el valor 1 en caso de no encontrarse especificado.

Por Ejemplo:

With GrialPrint_gpr
 
  .Printer_Advance
  ...
  .Printer_Advance 2
   ...
  .Printer_Advance 1.5
 
End With

Recuadros

Abrir un cuadro - Método OpenBox

Este método permite abrir un cuadro que podrá contener o no según se requiera, filas y columnas de la siguiente manera:

GrialPrint_Gpr.Openbox (Key as String, [x], [w])

Donde Key deberá contener el nombre del cuadro que se está iniciando.

X y W son opcionales y permiten definir la Posición del cuadro dentro de la hoja. En caso de omitirse estos valores, se asume por default un valor aproximado al ancho de la hoja.

Impresión de Líneas Horizontales - Método BoxSepar

Este método permite realizar la impresión de una línea horizontal dentro de un cuadro utilizando la siguiente sintaxis:

GrialPrint_Gpr.BoxSepar (Key as String)

Donde Key deberá contener el mismo nombre utilizado en la propiedad Openbox que inicializa al cuadro

Cerrar un cuadro - Método CloseBox

Este método permite cerrar un cuadro inicializado previamente cuando se requiera terminar de imprimir dentro del mismo, de la siguiente manera:

GrialPrint_Gpr.CloseBox (Key as String)

Donde Key deberá contener el mismo nombre especificado en OpenBox.

Impresión en Columnas

Definir Columnas de Impresión – Método DefineCol

GrialPrint_Gpr.DefineCol (Key As String, Title As String
            , [ColWidth As Single]
            , [AlignMode As gpr_AlignMode_Enum = AlignLeft_WordWrap])

Este método permite definir columnas.

Key
deberá contener el nombre de la columna pudiendo ser cualquier letra o texto.
Title
indica el nombre del encabezado de columna que desea salga impreso.
ColWidth
indicará el tamaño de la columna y es opcional, en caso de no contener ningún valor la columna asumirá el tamaño del texto que se imprimirá como encabezado de la columna.
AlignMode
será la alineación tanto del encabezado como del contenido de la columna. Es opcional y en caso de no contener ningún valor se asume alineación derecha y tanto el encabezado como el texto de la columna serán impresos hasta la longitud que indica el tamaño de la columna, pasando luego a la línea siguiente en caso de que el tamaño de dicho texto sea superior al tamaño de la columna definido.

Ej.

    .DefineCol "NOMBRE", "Nombre<vl>", 2000, AlignLeft

Nota: “<vl>” indica que luego de la columna “Nombre” se debe dibujar una línea vertical de separación.

Limpiar Definición de Columnas – Método ClearCols

Este método es utilizado para limpiar la definición de columnas existente. Generalmente es utilizado antes de definir las columnas de una impresión.

GrialPrint_Grp.ClearCols

Imprimir Encabezados de Columnas – Método WtColTitles

Este método es utilizado para, una vez definidas previamente las columnas que serán utilizadas dentro de una impresión, imprimir los encabezados de la mismas. Es decir que se utiliza para imprimir la línea superior de títulos. Una vez definidas las columnas y escribiendo luego la siguiente sintaxis:

GrialPrint_Gpr.WtColTitles

Se imprimirá dentro de su hoja el encabezado de cada una de las columnas definidas.

Imprimir contenido de las columnas – Método WtCol

Una vez definidas las columnas de impresión y luego de haber invocado a WtColTitles para que imprimir los encabezados de las mismas, será necesario llevar a cabo la impresión del contenido de cada una de las columnas que aparecerán en la impresión. Para esto utilizaremos el método WtCol de la siguiente manera:

GrialPrint_Gpr.WtCol (Key as String, Text as String, [SpecificAlignMode As Gpr_AlignMode_Enum = AlignDefault])

Donde el valor de Key deberá ser el mismo utilizado al momento de definir el nombre de la columna en donde se quiere imprimir su contenido, Text contendrá el valor a imprimir dentro de dicha columna y SpecificAlignMode la alineación que deberá tener dicho contenido (si se desea que sea diferente a la definida para la columna).

Es importante aclarar que el encabezado de una columna puede tener una alineación distinta al contenido de la misma. Para esto solo será necesario especificar para cada caso la alineación requerida ya sea al momento de definir la columna y luego al momento de imprimir el contenido de la misma. En el caso de que al momento de imprimir el contenido de una columna no se especifique ninguna alineación especifica, el mismo asumirá la especificada al momento de la definición de la columna correspondiente.

Propiedades

FontBold

Esta propiedad puede asumir los valores True o False.

En el caso de que el texto que se desea imprimir deba estar en negrita esta propiedad deberá tener valor true, caso contrario False. Cabe aclarar que si no se ha especificado desde un comienzo esta propiedad en true, no será necesario ponerla en false, ya que por default asumirá este valor en la impresión.

GrialPrint_Gpr.FontBold=True


Printer_DetailFontSize

Esta propiedad permite modificar el tamaño de la fuente de un texto.

Por default el tamaño de la fuente tiene un valor 8. En caso de que se necesite imprimir un tamaño de letras más grande se lo deberá especificar dentro de esta propiedad de la siguiente forma:

GrialPrint_Gpr.Printer_DetailFontSize = 11

Cabe aclarar que todo lo que se imprima luego de haber puesto ese tamaño de fuente, asumirá el mismo valor a no ser que se indique luego del ejemplo anterior el tamaño de fuente original nuevamente.


Códigos símil HTML para formatear la impresión

Estos códigos se utilizan para cambiar las propiedades del texto a imprimir en los métodos, Wt, WtLn, WtCol, etc.

Formateado del texto

<font n>: Establece el tamaño de la fuente en n.

.Wt 400,”<font 14>En size 14 <font 11>En Size 11<font 10>”

<font Nombre>: Establece la familia de la fuente.

.Wt 400,”<font Arial> Arial <font Tahoma> Tahoma”

<font +n>: Incrementa el tamaño de la fuente en n.

<font +2> Dos mas Grande <font +4> Ahora 6

<font -n>: Decrementa el tamaño de la fuente en n.

<font +4>Letras Grandes<font -4>Normal

<b>: Establece el texto en negrita.

<b> Texto en Negrita </b> Fin texto en Negrita

<i>: Establece el texto en Italica.

<i>Texto en Italica </i> Fin texto en Italica

<u>: Establece el texto con subrayado.

<u>Inicia texto subrayado </u> Fin texto subrayado

<h1>: Header 1, Inicia Titulo 1 (Idem: <font +10>)

<h1> Titulo 1 </h1> Fin titulo, vuelve al tamaño normal de fuente


<h2>: Header 2, Inicia Titulo 2 (Idem: <font +8>)

<h2> Titulo 2</h2> Fin titulo, vuelve al tamaño normal de fuente


<h3>: Header 3, Inicia Titulo 3 (Idem: <font +6>)

<h3> Titulo 3</h3> Fin titulo, vuelve al tamaño normal de fuente


<h4>: Header 4, Inicia Titulo 4 (Idem: )

<h4> Titulo 4</h4> Fin titulo, vuelve al tamaño normal de fuente

Problemas Comunes

  • No se imprime el escudo

Causa: Verificar que el control esté incializado. Esto se realiza automáticamente si el control tiene la extensión "_gpr".
Solucion: Renombrar el control con la extensión "_gpr"



GrialWorkflow <<< >>> GrialFileStorage

<>

Herramientas personales