GrialPrint
De GrialWIKI
(→Líneas arbitrarias) |
(→Líneas arbitrarias) |
||
Línea 421: | Línea 421: | ||
por ejemplo: Linea 100,100,"T",500,100 | por ejemplo: Linea 100,100,"T",500,100 | ||
hace una linea desde 100,100 que termina en 500,100 | hace una linea desde 100,100 que termina en 500,100 | ||
- | con lo que seria una linea horizontal de 400 de | + | con lo que seria una linea horizontal de 400 de ancho |
<br> | <br> |
Revisión de 12:48 20 jul 2011
Introducción al Framework Grial |
|
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.
Descripción de los métodos que interactuan al imprimir o visualizar un documento.
- 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.
- 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.
- PrintHeader Se dispara automáticamente antes de comenzar cada hoja
- PrintDocument: Este es el evento principal de impresión. Se dispara una vez por cada copia solicitada.
- PrintFooter Se dispara automáticamente al alcanzar la posición “PrintPos_Footer”
- PostDocumentPrint
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
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)
WtCenter
Imprime un texto pasado como parámetro en el centro de la hoja con la opción de que el texto este en negrita o no.
WtCenter(Text as String, [UserFontBold as Boolean=Verdadero])
WtLn
Imprime el texto pasado como parámetro y avanza una linea. Similar a usar Wt mas Printer_Advance.
WtLn(x as single, Text as String, [ColWith as single])
WtCurrCol
Si el valor a imprimir en una columna trata de una moneda, antepone al valor automáticamente el tipo de moneda del país.
WtCurrCol(Key as String, Curr as Currency)
GrialPrint_gpr.WtCurrCol "NOMBRECOLUMNA", "1.250,35"
Imprime $1.250,35 en la columna especificada.
WtColSepar
Dibuja una linea del ancho de la columna pasada como parámetro.
WtColSepar(Key As String)
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: <font +4>).
<h4> Titulo 4</h4> Fin titulo, vuelve al tamaño normal de fuente
<hr>: Horizontal Row: dibuja una línea de separación horizontal (invoca gpr.Printer_Separ).
<center>: imprime esa línea centrada. Sólo aplica a la línea en la cual está inlcluído.
<align center>: idem <center>: .
<align left>: imprime esa línea alineada a la izquierda.
<align right>: imprime esa línea alineada a la izquierda.
<align just>: Inicia impresión en modo justificado. Tambien puede ser <align justified> o <align justify>
<align /just>: Finaliza impresión en modo justificado. Tambien puede ser <align /justified> o <align /justify>.
<*>: Punto de lista, coloca un circulo relleno
<*> Punto 1
imprime:
• Punto 1
Impresión de Lineas
Líneas arbitrarias
Sub Linea (array de variants)
Comandos en el array de variants:
X, Y : Las dos primeras coordenadas se consideran el punto de partida de la línea.
H, V : Cualquier par siguiente de coordenadas se considera como una instrucción de “moverse dibujando, H unidades en el eje x, V unidades en el eje y”
"T" (To) Las siguientes coordenadas se consideran una posicion abosluta por ejemplo: Linea 100,100,"T",500,100 hace una linea desde 100,100 que termina en 500,100 con lo que seria una linea horizontal de 400 de ancho
"B" (Box) Hace un box desde la pos actual con el tamaño indicado por ejemplo: Linea 100,100,"B",50,20 hace un box desde 100,100 de 50 de ancho y 20 de alto.
"BF" (Box Filled) Idem B pero llena el box con el color default
"BT" (Box To) hace un box desde la pos actual hasta la posición indicada por ejemplo: Linea 100,100,BT,150,120 hace un box desde 100,100 a 150,120 (50 de ancho y 20 de alto)
"BTF" / "BFT" (Box To Filled) Idem “BT” pero llena el box con el color default
"w+n" / "w-n" (width) Cambia el ancho de la línea
Ejemplo:
.Linea 1000, 1000, "B", 2000, 2000 'Hace un box en 1000,1000 de 2000 x 2000 .Linea 1300, 1300, 500, 1000, 500, -1000 'Hace una "V" dentro del box .Linea 4000, 1000, "BT", 5000, 2000 'Hace un box en 4000,1000 de 1000 x 1000 'Hace dos lineas diagonales, la segunda mas ancha .Linea 4000, 800, 1120, 1100 .Linea "w+2", 4100, 800, 1120, 1100, "w-2" ' Hace un box, lleno de color gris .ForeColor = &HC0C0C0 .Linea 4400, 1100, "BF", 500, 500 'Hace una linea verde entre puntos arbitrarios, con coordenadas absolutas ‘Empieza en 4500,1200 y termina en 1000,1000 .ForeColor = vbGreen .Linea 4500, 1200, "T", 4600, 800, "T", 1600, 3500, "T", 1000, 1000
Resultado: (1000,1000)
Líneas verticales en las columnas dentro de los boxes
Para dibujar las líneas verticales, debe agregarse al final del título en la definción de columnas (.DefineCol) el código “<VL>” que significa “Vertical Line”.
Luego de dibujar un separador horizontal (.BoxSepar) o de cerrar el Box, (.CloseBox) se debe llamar al método “WtColVLines” El método “WtColVLines” dibujará, para las columnas con “<VL>”, líneas verticales desde el último separador horizontal, hacia arriba, hasta el comienzo de la columna.
With GrialPrint_Gpr .OpenBox "Firmas", 1800, 3000 .ClearCols ‘Defino 2 columnas en el box .DefineCol_CurrentX = 1800 ‘(empiezan en 1800 ya que el box esta en 1800) .DefineCol "F1", "Col 1 de 2<VL>", 1500, AlignCenter .DefineCol "F2", "Col 2 de 2", 1500, AlignCenter .WtColTitles .BoxSepar "Firmas" Dim n As Integer For n = 1 To 3 .WtCol "F1", n .WtCol "F2", n .Printer_Advance Next .BoxSepar "Firmas" .WtColVLines ‘Nota: después del .BoxSepar y antes de .ClearCols .ClearCols ‘Ahora defino 3 columnas en el mismo box .DefineCol_CurrentX = 1800 .DefineCol "F1", "Col 1 de 3<vl>", 1500, AlignCenter .DefineCol "F2", "Col 2 de 3<vl>", 1500, AlignCenter .DefineCol "F3", "Col 3 de 3", 1500, AlignCenter .WtColTitles For n = 1 To 3 .BoxSepar "Firmas" .WtCol "F1", n .WtCol "F2", n .WtCol "F3", n .Printer_Advance Next .CloseBox "Firmas" .WtColVLines ‘Nota: después del .CloseBox End With
Resultado:
GrialPrint: 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