Realizar la tarea de imprimir sobre los objetos de impresora y de vista previa, sin utilizar la utilidad Crystal Report.
La tarea de impresión puede ser abordada de muchas formas, vamos a ver una de tantas, ni mejor ni peor, la comprensión de la misma, permitirá abordar tareas de impresión más complejas.
Actualmente se imprime desde el evento, PrintPage, que se desencadena al asignar el objeto de impresión, un Objeto del tipo PrintDocument, sobre uno de sus posibles destinatarios, PrintPreviewDialog o una impresora de las del sistema.
La secuencia de impresión se basa en tres pasos básicos, a los que le corresponden otros tantos eventos.
Inicialización BeginPrint
Parte cíclica del listado PrintPage
Fin del proceso EndPrint
En esta secuencia se ha de desarrollar todo el proceso.
Hay que advertir de una situación que si se desconoce o se olvida, nos puede llevar de cabeza.
El salto de página se produce dentro del evento PrintPage, y la forma de provocarlo es activando una propiedad denominado HasMorePages, a cierto, y ejecutando a continuación una salida de procedimiento.
El activar a cierto dicha propiedad provoca un retorno al evento, procedimiento al fin y al cabo, pero este retorno se produce desde el principio, con todas sus consecuencias, no retorna al punto donde se realiza la acción.
Si no se tiene presente dicha situación, la perdida de datos incomprensible puede llevarnos de cabeza.
Por otro lado la acción de asignar el objeto de impresión, PrintDocument a su destino, impresora o vista previa, no hace que se ejecute todo el proceso y después se siga con la siguiente línea de código, sino que provoca la ejecución de un hilo distinto de programa, lo que lleva a que el programa haya finalizado, aunque se esté ejecutando todavía todo el proceso de impresión.
La secuencia de un listado en VB es la siguiente:
Introducción de los parámetros del listado por teclado.
Indicación de conformidad.
Inicio del proceso de listado.
La introducción de los parámetros del listado, no deja de ser una interface gráfica, la cual desarrollaremos como cualquier otra.
La indicación de conformidad es la pulsación de un button, con el texto Aceptar o similar, y si procede porque el proceso lo requiere una segunda conformidad para evitar un inicio accidental.
El inicio del listado implica la asignación de un objeto PrintDocument al destino del listado que será una impresora o un objeto de vista previa.
DialogoImpresora.AllowSelection = False
DialogoImpresora.AllowSomePages = False
DialogoImpresora.PrintToFile = False
DialogoImpresora.PrinterSettings.Copies = 1
DialogoImpresora.Document = Hoja
If DialogoImpresora.ShowDialog() = DialogResult.OK Then Hoja.Print
Esto podría ser el código a ejecutar para un destino en una impresora.
Esta fase es de definición.
DialogoImpresora.AllowSelection = False
DialogoImpresora.AllowSomePages = False
DialogoImpresora.PrintToFile = False
DialogoImpresora.PrinterSettings.Copies = 1
DialogoImpresora.Document = Hoja
La línea que realmente lanza el listado es esta:
If DialogoImpresora.ShowDialog() = DialogResult.OK Then Hoja.Print
Hemos visto como lanzar el listado a partir de la selección que realiza el usuario en la ventana de impresión.
Ahora se trata de comprender el proceso en sí.
Hay que recordar que cuando se ejecuta esa línea, el programa no se para ahí, si no que sigue por un lado la impresión y por otro lado el programa, lo mejor para entenderlo, es colocar un punto de ruptura con F9, en la línea siguiente a la de inicio de listado.
Un listado tiene distintas fases.
–Inicio de proceso.
–Línea de identificación.
–Título
–Cabecera
–Detalle
–Pie de página
–Final de proceso
La parte repetitiva del mismo es esta:
–Línea de identificación.
–Título
–Cabecera
–Detalle
–Pie de página
Y la parte donde realmente se desarrolla todo el listado es
–Detalle
Aquí es donde se van lanzando cada una de las líneas que componen el listado.
Los pasos que se han nombrado no tienen nada que ver con un lenguaje de programación.
Son el orden natural de un proceso de impresión.
Por lo que aunque cambie el lenguaje de programación, los pasos serán iguales.
Todos no intervienen siempre, pero son esos, por lo tanto lo lógico es crear un procedimiento para cada una de las distintas fases.
Asignemos ahora los eventos anteriormente expuestos a las fases del listado.
Inicialización BeginPrint
–Inicio de proceso.
Parte cíclica del listado PrintPage
–Línea de identificación.
–Título
–Cabecera
–Detalle
–Pie de página
Fin del proceso EndPrint
–Final de proceso
Veamos primero los distintos procedimientos, para así ya después solo nombrarlos por su nombre.
Síguenos en: Facebook Sobre aulaClic Política de Cookies