You are on page 1of 52

Informes e impresin en aplicaciones Windows Forms

ndice Descripcin ....................................................................................... 1 Leccin: impresin desde una aplicacin Windows Forms ......................... 2 Leccin: utilizar la vista previa de impresin, opciones de pgina y cajas de dilogo de impresin ......................................................... 12 Leccin: creacin del contenido del documento de impresin utilizando GDI+ ............................................................................... 28 Leccin: crear informes utilizando Crystal Reports ................................ 43

Informes e impresin en aplicaciones Windows Forms

Descripcin
Printing from a Windows Forms Application Using the Print Preview, Page Setup, and Print Dialogs Constructing Print Document Content by Using GDI+ Creating Reports by Using Crystal Reports

Introduccin

Cualquier aplicacin desarrollada para el sistema operativo Microsoft Windows que maneja datos debera incluir caractersticas de informes e impresin para los usuarios. Este mdulo explora cmo implementar impresin en una aplicacin Windows Forms y cmo crear informes en una aplicacin Windows Forms utilizando Crystal Reports Microsoft Visual Studio .NET. Tras completar este mdulo, podremos: Imprimir documentos en una aplicacin Windows Forms Utilizar las cajas de dilogo de Visual Studio .NET en una aplicacin Windows Forms Utilizar GDI+ para construir contenido sobre documentos de impresin Crear y formatear informes utilizando Crystal Reports.

Objetivos

Informes e impresin en aplicaciones Windows Forms

Leccin: impresin desde una aplicacin Windows Forms


How Printing Works in a .NET Windows Forms Application PrintDocument Object PrintPage Event and PrintPageEventArgs How to Enable Printing in a Windows Forms Application Practice: Adding Print Support to a Windows Forms Application

Introduccin

Esta leccin describe cmo aadir soporte de impresin bsico a una aplicacin Windows Forms. La mayora de aplicaciones desarrolladas para Windows incluyen la capacidad de imprimir alguna informacin. Visual Studio .NET proporciona componentes que simplifican el proceso de impresin en nuestras aplicaciones Windows Forms y nos provee control por todo el proceso de impresin. Tras completar esta leccin, seremos capaces de: Aadir un control PrintDocument a un formulario y crear un procesador de eventos PrintPage. Aadir lgica de programacin a un procedimiento de evento PrintPage para construir el contenido de las pginas. Aadir lgica de programacin a un procedimiento de evento PrintPage que permite a nuestra aplicacin imprimir ms de una pgina de contenido.

Objetivos de la leccin

Informes e impresin en aplicaciones Windows Forms

Cmo funciona la impresin en una aplicacin Windows Forms


2. PrintPage event Construct content Support multi-page docs

Again, Again, How? How?

3. PrintPageEventArgs parameter PageSettings property Graphics object HasMorePages property

How? How?

1. PrintDocument object Enables printing

What What About User About User Support? Support?

5. Print method Sends content to printer

But How Do II But How Do Actually Actually Print? Print?

4. Standard dialog boxes for printing PrintPreviewDialog PageSetupDialog PrintDialog

Introduccin

Los desarrolladores de aplicaciones que utilizan Windows Forms utilizarn la clase PrintDocument para soportar la impresin en sus aplicaciones Windows Forms de .NET. Sin embargo, el objeto PrintDocument no es el nico componente que usaremos cuando imprimamos documentos en aplicaciones Windows Forms. 1. Aadir el objeto PrintDocument. El objeto PrintDocument es esencial en la impresin de aplicaciones en Windows Forms. 2. Crear el procesador de eventos PrintPage. El objeto PrintDocument utiliza la lgica de programa que hemos creado en el evento PrintDocument.PrintPage para construir el contenido del documento de impresin e indica cuando deben generarse pginas adicionales. 3. Utilizar el parmetro PrintPageEventArgs. El evento PrintPage utiliza el parmetro PrintPageEventArgs que recibe para acceder y almacenar informacin sobre el documento de impresin. Las aplicaciones generalmente utilizarn la propiedad PageSettings para leer informacin sobre la presentacin del documento, construir el contenido de la pgina dibujando texto y grficos en el objeto, e indicar cuando deben generarse pginas adicionales estableciendo la propiedad HasMorePages. 4. Utilizar las cajas de dilogo disponibles en Visual Studio .NET. Podemos aadir soporte de usuario utilizando las tres cajas de dilogo proporcionadas en la vista Diseo del Cuadro de herramientas. Los cuadros de dilogo estndares proporcionan un modo fcil de aadir un potente soporte de usuario final en nuestras aplicaciones con un interfaz de usuario familiar. 5. Imprimir el documento utilizando el mtodo Print. El mtodo PrintDocument.Print se utiliza para permitir la impresin del documento actual.

Procedimiento de impresin

Informes e impresin en aplicaciones Windows Forms

Objeto PrintDocument
PrintDocument object Provides the ability to print a document Provides properties that describe what to print
PrintDocument PrintDocument Properties Properties
DefaultPageSettings DefaultPageSettings DocumentName DocumentName PrintController PrintController PrinterSettings PrinterSettings

PrintDocument PrintDocument Events Events


BeginPrint BeginPrint EndPrint EndPrint PrintPage PrintPage QueryPageSettings QueryPageSettings

PrintDocument PrintDocument Methods Methods


Dispose Dispose Print Print

Note: The check marks indicate the most commonly used properties, events, and methods of the PrintDocument object

Introduccin

El objeto PrintDocument es esencial para la impresin en aplicaciones Windows Forms. Utilizamos PrintDocument para establecer propiedades que especifican qu imprimir y proporcionar las propiedades, eventos y mtodos requeridos para imprimir documentos. El objeto PrintDocument generalmente se aade a un formulario desde el Cuadro de herramientas en tiempo de diseo, pero una instancia de la clase PrintDocument puede declararse tambin en tiempo de ejecucin. La propiedad DefaultPageSettings obtiene o establece las opciones de pginas que son utilizadas como opciones por defecto para todas las pginas a imprimir. La propiedad PrinterSettings puede utilizarse para obtener o establecer la impresora que imprime el documento, modificar las propiedades de la impresora seleccionada y modificar las opciones asociadas con el trabajo de impresin como el nmero de copias a imprimir. La siguiente tabla describe algunas propiedades adicionales del objeto PrintDocument que utilizaremos para personalizar un trabajo de impresin:
Propiedad DocumentName PrintController Descripcin Obtiene o establece el nombre del documento a visualizar mientras se imprime el documento. Obtiene o establece el controlador de impresin que gua el proceso de impresin.

Propiedades de PrintDocument

Para ms informacin y una lista completa de las propiedades del objeto PrintDocument, buscar en la documentacin de ayuda de Visual Studio .NET utilizando la frase miembros de PrintDocument.

Informes e impresin en aplicaciones Windows Forms

Eventos de PrintDocument

El evento PrintPage se utiliza para generar el contenido del documento de impresin y es en el controlador de eventos PrintPage que debemos incluir nuestro propio cdigo para indicar cuando el documento tiene pginas adicionales de contenido a imprimir. La siguiente tabla describe algunos eventos adicionales del objeto PrintDocument que nos permiten imprimir salida.
Evento BeginPrint Descripcin Ocurre cuando el mtodo Print se invoca y antes de que la primera pgina del documento se imprima. Un ejemplo de cuando utilizar BeginPrint es cuando queremos notificar al usuario cuantas pginas hay en un trabajo de impresin. Ocurre cuando la ltima pgina del documento se ha impreso. Un ejemplo de uso de EndPrint es cuando queremos avisar al usuario de que se ha completado el trabajo de impresin. Ocurre inmediatamente antes de cada evento PrintPage. Podemos usar QueryPageSettings cuando queremos utilizar diferentes opciones PageSettings para una o ms pginas de un documento de impresin.

EndPrint

QueryPageSettings

Para ms informacin y una lista completa de las propiedades del objeto PrintDocument, buscar en la documentacin de ayuda de Visual Studio .NET utilizando la frase miembros de PrintDocument. Mtodos de PrintDocument Una vez que hemos establecido la impresora y las opciones de pgina por defecto y construido los contenidos del documento de impresin, utilizaremos el mtodo Print para iniciar el proceso de impresin. El mtodo Print enva los contenidos del documento de impresin a la impresora pasando el dispositivo de impresin a un objeto Graphics que acta de un contenedor para el contenido. El objeto Graphics se discutir en ms detalle en el evento PrintPage y el tpico PrintPageEventArgs en este mdulo. El mtodo Dispose libera los recursos utilizados por el componente PrintDocument. Para ms informacin y una lista completa de las propiedades del objeto PrintDocument, buscar en la documentacin de ayuda de Visual Studio .NET utilizando la frase miembros de PrintDocument.

Informes e impresin en aplicaciones Windows Forms

Evento PrintPage y PrintPageEventArgs


PrintPage Event
The PrintPage event includes two parameters: an object representing the Sender and a PrintPageEventsArgs object The PrintPage event procedure contains the programming logic that constructs the contents of the print document and ensures that the entire print document is printed

PrintPagesEventArgs Object
The PrintPageEventArgs object provides the components required to construct the pages of the print document PageSettings, Graphics, and HasMorePages are the critical members

Introduccin

Un evento PrintDocument.PrintPage ocurre para cada pgina de un documento de impresin que se visualiza o imprime. Creamos una subrutina para gestionar un evento PrintPage y la poblamos con el cdigo utilizado para construir el contenido del documento de impresin. El procedimiento de evento que procesa el evento PrintDocument.PrintPage tiene dos parmetros: el objeto que representa al emisor que dispara el evento (PrintDocument) y el objeto PrintPageEventArgs. La subrutina que creamos para procesar el evento PrintPage contiene la lgica de programacin requerida para construir el documento de impresin (utilizando los componentes proporcionados por el objeto PrintPageEventArgs). El procedimiento de evento PrintPage tambin contiene lgica de programacin que nosotros desarrollamos para indicar cuando debe generarse una pgina adicional de contenido. El parmetro PrintPageEventArgs contiene todos los datos requeridos para construir una pgina del documento de impresin. El objeto PrintPageEventArgs tiene seis componentes miembro, incluyendo el objeto Graphics que se utiliza como el papel sobre el que se dibujan los contenidos de una pgina. Los otros dos miembros ms crticos son la propiedad HasMorePages que debemos establecer a True cuando hay ms pginas a imprimir y la propiedad PageSettings que puede utilizarse para leer los valores de configuracin de la pgina para la pgina actual. Las otras tres propiedades del parmetro PrintPageEventArgs son Cancel, MarginBounds y PrintBounds. Podemos utilizar la propiedad Cancel para detener la construccin de las pginas del documento antes del final de la impresin del mismo y las propiedades PagesBounds y MarginBounds para devolver el tamao de la pgina actual y el tamao de la pgina dentro de los mrgenes, respectivamente (ambos pueden ser determinados por la propiedad PageSettings).

Procedimiento de evento PrintPage

Miembros del parmetro PrintPageEventArgs

Informes e impresin en aplicaciones Windows Forms

PrintPageEventArgs. PageSettings

La propiedad PageSettings proporcionada por el parmetro PrintPageEventArgs es una propiedad de modo lectura utilizada para obtener las opciones de la pgina para la pgina actual. PageSettings incluye los miembros Bounds y Margins que proporcionan la misma informacin que encontramos en las propiedades PageBounds y MarginBounds. Nota Para modificar las opciones de pgina, debemos procesar el evento QueryPageSettings del objeto PrintDocument. El siguiente ejemplo demuestra cmo utilizar las propiedades PageSettings y MarginBounds dentro de un procesador de eventos PrintPage para determinar la ubicacin del margen izquierdo y el nmero de lneas de texto que cabrn en una pgina dada una fuente determinada.
LeftMargin = e.PageSettings.Margins.Left LinesPP = e.MarginBounds.Height/myFont.GetHeight(e.Graphics)

PrintPageEventArgs. Graphics

El objeto Graphics proporcionado por el parmetro PrintPageEventArgs acta como un contenedor para cada pgina de un documento de impresin. Utilizamos los mtodos de dibujo de GDI+ del objeto Graphics para dibujar los contenidos de texto y grficos de la pgina. Por ejemplo, para dibujar una cadena de texto dentro de un procesador de eventos PrintPage, podramos utilizar el mtodo Graphics.DrawString como sigue:
e.Graphics.DrawString(textString, myFont, myBrush, X, Y)

PrintPageEventsArgs. HasMorePages

La propiedad HasMorePages proporcionada por el parmetro PrintPageEventArgs es un valor Boolean que es False por defecto. Debemos establecer manualmente de la propiedad HasMorePages a True para indicar que debera imprimirse una pgina adicional. El siguiente ejemplo demuestra cmo establecer la propiedad HasMorePages a True cuando la siguiente lnea de texto debera estar por debajo del margen inferior de la pgina.
While CurrentLine < LinesPerPage textLine = StreamToPrint.ReadLine() If textLine Is Nothing Then Exit While <draw textLine and increment CurrentLine> End While If Not (textLine Is Nothing) Then e.HasMorePages = True Else e.HasMorePages = False End If

Informes e impresin en aplicaciones Windows Forms

Cmo habilitar la impresin en una aplicacin Windows Forms


Print Page Event Print Page Event
PrintPageEventArgs Use the Use the class to read page settings such class to read page settings such as margins and page height and as margins and page height and width width Establish fonts and brushes used Establish fonts and brushes used in your output in your output Establish regions on the page Establish regions on the page Construct output by positioning Construct output by positioning text and graphics by using the text and graphics by using the methods of the Graphics class methods of the Graphics class

PrintPagesEventArgs Class PrintPagesEventArgs Class


Graphics Object HasMorePages PageSettings

DefaultPageSettings DefaultPageSettings

PrintDocument Object PrintDocument Object


Specify print settings Specify print settings Add printing logic to PrintPage Add printing logic to PrintPage Event Event Call the Print method Call the Print method

Print Method Print Method


Calls PrintPage Calls PrintPage Checks HasMorePages Checks HasMorePages

DIALOGS DIALOGS
Document property of the Document property of the Dialogs set to the Dialogs set to the PrintDocument object PrintDocument object

Introduccin

Para imprimir desde una aplicacin Windows Forms, utilizaremos un objeto PrintDocument para definir la impresora y las caractersticas del trabajo de impresin, aadir lgica de programacin al evento PrintPage, proporcionar a nuestros usuarios con soporte en tiempo de ejecucin (utilizando los cuadros de dilogo estndares de Visual Studio .NET) y llamar al mtodo Print. Para imprimir un documento de texto desde una aplicacin Windows Forms, seguiremos el procedimiento siguiente: 1. Aadir una instancia de una clase PrintDocument a nuestra aplicacin y crear un procedimiento de evento PrintPage. Para aadir un control PrintDocument a un formulario, abrir el Cuadro de herramientas, y a continuacin hacer doble clic en PrintDocument. Para crear una subrutina PrintPage, abrir el formulario en el Editor de Cdigo, hacer clic en PrintDocument1 en la lista Nombre de clase, y a continuacin hacer clic en PrintPage en la lista Nombre de mtodo. 2. Aadir lgica de programacin a la subrutina PrintDocument1_PrintPage para construir el contenido del documento de impresin. Podemos utilizar la propiedad PageSettings para definir las regiones de texto y grficos sobre la pgina. Un sencillo ejemplo es asignar el valor de PageSettings.Margins.Left a una variable que se utilizar para posicionar el texto en el lado izquierdo de la pgina. Debemos utilizar los mtodos de dibujo de GDI+ del objeto PrintPageEventArgs.Graphics para construir los contenidos de la pgina del documento de impresin. 3. Aadir soporte para vista previa de nuestro documento de impresin de modo que podamos probar el cdigo que hemos generado hasta este momento. Un modo sencillo de previsualizar nuestro documento de impresin es aadir un PrintPreviewControl a nuestro formulario desde el Cuadro de herramientas. 4. Aadir lgica de programacin adicional a la subrutina PrintDocument1_PrintPage que utiliza la propiedad HasMorePages para indicar si deben o no imprimirse ms pginas. El modo en que determinamos si HasMorePages debera establecerse a True depende de cmo se construye nuestro documento de impresin.

Procedimiento: activar la impresin en una aplicacin Windows Forms

Informes e impresin en aplicaciones Windows Forms

Prctica: aadir soporte de impresin a una aplicacin Windows Forms


In this practice, you will Add a PrintDocument control to a project Create a PrintPage event procedure and develop code to construct the contents of a print document Set the value of the HasMorePages property to indicate when more pages should be printed Begin reviewing the objectives for this practice activity

10 min

Introduccin

En esta prctica, aadiremos soporte de impresin a una aplicacin Windows Forms. La prctica consiste en aadir un control PrintDocument a un proyecto, crear una subrutina para procesar el evento PrintPage, aadir lgica de programacin a la subrutina PrintPage, y utilizar la propiedad HasMorePages. Surgirn algunas cuestiones en alguno de los pasos. Intentar encontrar la respuesta antes de pasar al siguiente paso.. Abrir el proyecto de la prctica 1. Usar Windows Explorer para buscar en la carpeta pract01\Starter que se puede encontrar dentro del fichero practs13.zip. 2. Hacer doble clic en el archivo de solucin PrintProcess.sln para abrir el proyecto.

Instrucciones

10

Informes e impresin en aplicaciones Windows Forms

Aadir el control PrintDocument a nuestra aplicacin 1. En el Explorador de soluciones, hacer clic en Form1.vb, y a continuacin en el icono Ver diseador. 2. En el Cuadro de herramientas, desplacmonos hacia abajo hasta que aparezca el control PrintDocument, y hacer doble clic sobre l. 3. Qu funcionalidad proporciona la clase PrintDocument a nuestra aplicacin? La clase PrintDocument permite a una aplicacin Windows Forms iniciar el proceso de impresin (invocando al mtodo PrintDocument.Print) y proporciona acceso a las opciones de impresin y pginas que pueden ser utilizadas para controlar la apariencia de nuestro documento de impresin. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________

Crear una subrutina PrintPage personalizada 1. En el Explorador de soluciones, hacer clic en Form1.vb, y a continuacin sobre el icono Ver cdigo. 2. En la lista Nombre de clase, hacer clic en PrintDocument1. 3. En la lista Nombre de mtodo, hacer clic en PrintPage. 4. Cambiar el nombre de la subrutina que procesa el evento PrintDocument.PrintPage de PrintDocument1_PrintPage a MyPrintPage. 5. Cual es el propsito del evento PrintDocument.PrintPage? Utilizaremos la subrutina que procesa el evento PrintDocument.PrintPage para construir cada pgina de un documento de impresin individualmente, para controlar el nmero de pginas del documento de impresin que se crearn, ajustar las opciones de pgina de un documento de impresin y para cancelar un trabajo de impresin cuando sea necesario. El objeto Graphics del parmetro PrintPageEventArgs se utiliza para construir los contenidos de cada pgina individualmente. El objeto Graphics se enviar al dispositivo de impresin utilizando el mtodo PrintDocument.Print. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________

Informes e impresin en aplicaciones Windows Forms

11

6. Aadir las sentencias de cdigo siguientes a la subrutina MyPrintPage:


e.Graghics.Drawstring("Page " & currentPage.ToString & _ " text will go here.", myFont, myBrush, X, Y) If currentPage < totalPages Then currentPage += 1 End If

7. Presionar F5, y a continuacin hacer clic en Print Preview. 8. Cerrar el cuadro de dilogo PrintPreviewDialog. 9. Utilizar el control NumericUpDown para aadir una segunda pgina a nuestro documento de impresin y a continuacin realizar una vista previa de nuestro documento de nuevo. 10. Por qu nuestra aplicacin no muestra ms que una pgina? La propiedad HasMorePages del objeto PrintPageEventArgs est en False por defecto. Debemos desarrollar la lgica de programacin para un bucle de impresin cuando el trabajo de impresin incluye ms de una pgina en el documento. ____________________________________________________________ ____________________________________________________________ 11. Cerrar la aplicacin PrintProcess. Crear un bucle de impresin para garantizar que se imprimen todas las pginas del documento 1. Modificar los contenidos de la sentencia If-Then-Else cerca del final de nuestra subrutina MyPrintPage de modo que sea similar a la siguiente:
If currentPage < totalPages Then currentPage += 1 e.HasMorePages = True Else e.HasMorePages = False End If

2. Iniciar la aplicacin PrintProcess. 3. Utilizar el control NumericUpDown para aadir una segunda pgina a nuestro documento y a continuacin realizar una vista previa de nuestro documento de impresin de nuevo. Deberamos ahora ser capaces de ver ambas pginas de nuestro documento de impresin. Cerrar la aplicacin y Visual Studio .NET Se el tiempo lo permite, utilicemos los dos botones de la parte inferior de Form1 para mostrar alguna informacin adicional que est disponible a travs del objeto PrintDocument y a continuacin examinar el cdigo subyacente. 1. Guardar la aplicacin PrintProcess. 2. Cerrar la aplicacin PrintProcess. 3. Cerrar Visual Studio .NET

12

Informes e impresin en aplicaciones Windows Forms

Leccin: utilizar la vista previa de impresin, opciones de pgina y cajas de dilogo de impresin
How to Use the PrintPreviewDialog Control Practice: Using the PrintPreviewDialog Control How to Use the PageSetupDialog Control Practice: Using the PageSetupDialog Control How to Use the PrintDialog Control Practice: Using the PrintDialog Control

Introduccin

Visual Studio .NET incluye tres cuadros de dilogo preconfigurados: PrintPreviewDialog, PageSetupDialog y PrintDialog, que permiten a nuestra aplicacin de usuario realizar una vista previa de un documento de impresin, especificar las opciones de pginas y establecer las opciones de impresora y de los trabajos de impresin desde una aplicacin Windows Forms. Utilizar estos cuadros de dilogo preconfigurados en una aplicacin Windows Forms no slo facilita el desarrollo, sino que tambin proporciona un interfaz limpio eficiente y familiar a los usuarios finales. Esta leccin explica cmo utilizar los tres cuadros de dilogo en una aplicacin Windows Forms. Tras completar esta leccin, seremos capaces de: Disponer de una vista previa del documento de impresin utilizando los controles PrintPreviewDialog y PrintPreviewControl. Utilizar un control PrintPreviewControl para previsualizar nuestro documento de impresin. Especificar las opciones de pginas de un documento utilizando el control PageSetupDialog. Seleccionar una impresora y opciones para el trabajo de impresin utilizando el control PrintDialog.

Objetivos de la leccin

Informes e impresin en aplicaciones Windows Forms

13

Cmo utilizar el control PrintPreviewDialog


PrintPreviewDialog

Use PrintPreviewDialog to display how a document will appear when printed To display a print preview of a document 1. Create an instance of the PrintPreviewDialog component 2. Set the Document property to the PrintDocument object 3. Configure the desired display settings for the PrintPreviewDialog and the included PrintPreviewControl 4. Display the dialog by using the ShowDialog method CodeExample

Introduccin

Una caracterstica habitual de las aplicaciones es la capacidad de previsualizar un documento a imprimir. En las aplicaciones Windows Forms, esta funcionalidad se proporciona mediante el control PrintPreviewDialog. PrintPreviewDialog contiene PrintPreviewControl as como tambin controles para imprimir, realizar zoom, visualizar una o varias pginas y cerrar el cuadro de dilogo. El cuadro de dilogo estndar PrintPreviewDialog proporciona al usuario una herramienta familiar para previsualizar documentos, pero podemos desarrollar nuestro formulario de vista previa personalizado utilizando el mismo control PrintPreviewControl utilizado por PrintPreviewDialog cuando nuestra aplicacin o nuestros usuarios necesiten algo diferente. Para utilizar PrintPreviewDialog y mostrar una vista previa de impresin de un documento: 1. Aadir un control PrintPreviewDialog a nuestro proyecto utilizando el Cuadro de herramientas, o crear un PrintPreviewDialog en tiempo de ejecucin utilizando cdigo como el siguiente:
Dim previewDialog As PrintPreviewDialog previewDialog = New PrintPreviewDialog()

Procedimiento

2. Establecer la propiedad Document del control PrintPreviewDialog al componente PrintDocument. Una vez hayamos creado un objeto PrintPreviewDialog, debemos establecer su propiedad Document al objeto PrintDocument de nuestro documento de impresin. Podemos establecer la propiedad Document en la ventana Propiedades del control PrintPreviewDialog en tiempo de diseo o con el siguiente cdigo en tiempo de ejecucin:
previewDialog.Document = PrintDocument1

14

Informes e impresin en aplicaciones Windows Forms

3. Podemos utilizar las propiedades de PrintPreviewDialog y del PrintPreviewControl incluido para establecer las opciones de visualizacin mostrando el cuadro de dilogo:
previewDialog.WindowState = FormWindowState.Maximized previewDialog.PrintPreviewControl.StartPage = 0 previewDialog.PrintPreviewControl.Zoom = 1.0

4. Mostrar PrintPreviewDialog utilizando el mtodo ShowDialog. Como otros cuadros de dilogo, podemos utilizar el mtodo ShowDialog para visualizar el cuadro de dilogo PrintPreview en tiempo de ejecucin:
previewDialog.ShowDialog()

Ejemplo

El siguiente cdigo muestra un ejemplo de cmo utilizar el control PrintPreviewDialog para mostrar una vista previa de un documento. El ejemplo asume que un control PrintPreviewDialog y un control PrintDocument han sido aadidos a un formulario y que se invoca la subrutina PrintPreview desde un procesador de eventos.
Private Sub PrintPreview() ' ensure that the first page of the print document is shown PrintPreviewDialog1.PrintPreviewControl.StartPage = 0 ' display the document two pages at a time PrintPreviewDialog1.PrintPreviewControl.Columns = 2 ' maximize the size of the dialog box on the display screen PrintPreviewDialog1.WindowState = FormWindowState.Maximized ' display the contents of the appropriate print document PrintPreviewDialog1.Document = PrintDocument1 PrintPreviewDialog1.ShowDialog End Sub

PrintPreviewControl

PrintPreviewControl se proporciona en el Cuadro de herramientas como un control separado que podemos utilizar para previsualizar un documento de impresin. Podemos utilizar el control PrintPreviewControl cuando deseemos definir la interfaz de usuario de nuestra vista previa. No tiene botones ni dems elementos de interfaz de usuario. Algunas de las propiedades del control PrintPreviewControl incluyen Zoom, Columns, Rows y StartPage. Estas propiedades estn disponibles si estamos utilizando PrintPreviewControl separadamente o como parte de PrintPreviewDialog.
PrintPreviewControl.Columns = 2 PrintPreviewDialog.PrintPreviewControl.Columns = 2

Para ms informacin sobre PrintPreviewControl, en la ayuda de Visual Studio .NET, buscar utilizando la frase PrintPreviewControl.

Informes e impresin en aplicaciones Windows Forms

15

Prctica: utilizar el control PrintPreviewDialog


In this practice, you will Add a PrintPreviewDialog control Create a PrintPreview subroutine Modify the display settings for the PrintPreviewDialog dialog box

Begin reviewing the objectives for this practice activity

8 min

Introduccin

En esta prctica, aadiremos un control PrintPreviewDialog y lgica de programacin a un proyecto de modo que los usuarios de la aplicacin puedan previsualizar un documento antes de imprimirlo. Abrir el proyecto de la prctica 1. Utilizar el Explorador de Windows para acceder a la carpeta pract02\Starter que se puede encontrar dentro del fichero practs13.zip. 2. Hacer doble clic en el archivo de solucin PrintPreviewDialog.sln para abrir el proyecto. Aadir el control PrintPreviewDialog a nuestra aplicacin 1. En el Explorador de soluciones, hacer clic en Form1.vb, y a continuacin en Ver diseador. 2. En el Cuadro de herramientas, desplazarse hacia abajo hasta que aparezca el control PrintPreviewDialog, y a continuacin hacer doble clic en PrintPreviewDialog. 3. Dnde aparece PrintPreviewDialog en la ventana Vista de Diseo? El control PrintPreviewDialog se aade a la bandeja de componentes en la parte inferior de la ventana Vista de Diseo. ____________________________________________________________ ____________________________________________________________

Instrucciones

16

Informes e impresin en aplicaciones Windows Forms

Crear una subrutina PrintPreview que muestre el documento de impresin 1. En el Explorador de soluciones, hacer clic en Form1.vb, y a continuacin en Ver cdigo. 2. En el men Ver, posicionarse sobre Mostrar tareas, y a continuacin en Comentario. 3. En la Lista de tareas, hacer doble clic en TODO: create PrintPreview subroutine. 4. Aadir la siguiente sentencia de cdigo bajo la lnea TODO y presionar ENTER.
Private Sub PrintPreview

5. Aadir las sentencias de cdigo siguientes a la subrutina PrintPreview.


PrintPreviewDialog1.Document = PrintDocument1 PrintPreviewDialog1.ShowDialog()

6. Ejecutar la aplicacin PrintPreviewDialog y utilizar el men o el botn para visualizar el documento de impresin. 7. Hay algn modo de hacer el cuadro de dilogo ms largo por defecto? S. La propiedad WindowState del cuadro de dilogo puede utilizarse para establecer el estado de la ventana por defecto a Maximized. ____________________________________________________________ ____________________________________________________________ 8. Cerrar la aplicacin PrintPreviewDialog. Modificar las opciones de visualizacin parar el cuadro de dilogo PrintPreviewDialog 1. Aadir la siguiente lnea de cdigo en la parte superior de la subrutina PrintPreview.
PrintPreviewDialog1.WindowState = FormWindowState.Maximized

2. Ejecutar la aplicacin PrintPreviewDialog y utilizar el men o el botn para mostrar el documento de impresin. 3. Modificar el nmero de pgina visualizado a pgina 4, y a continuacin cerrar el cuadro de dilogo. 4. Abrir de nuevo PrintPreviewDialog. Observar que la pgina de inicio es la pgina que se ha mostrado cuando se cerr el cuadro de dilogo. 5. Hacer clic en Close, cerrar la aplicacin y a continuacin aadir las siguientes lneas de cdigo en la parte superior de la subrutina PrintPreview.
PrintPreviewDialog1.PrintPreviewControl.StartPage = 0 PrintPreviewDialog1.PrintPreviewControl.Zoom = 1.0

6. Ejecutar la aplicacin PrintPreviewDialog, y utilizar el men o el botn para visualizar el documento de impresin. Verificar que Print Preview Dialog siempre muestra la pgina 1 al 100% al abrirse.

Informes e impresin en aplicaciones Windows Forms

17

7. Opcional: abrir PrintPreviewDialog, cambiar la pgina que se est visualizando a pgina 2, y a continuacin cerrar y abrir de nuevo el cuadro de dilogo de vista previa para verificar que la pgina inicial mostrada es siempre la pgina 1. 8. Cerrar el cuadro de dilogo, y a continuacin cerrar la aplicacin. Si el tiempo lo permite Examinar algunos mtodos adicionales para mostrar un documento de impresin 1. En la vista Diseo, activar los otros dos botones de Form1. 2. Iniciar la aplicacin y utilizar cada botn para visualizar el documento de impresin. 3. Cerrar la aplicacin y examinar el cdigo utilizado para visualizar el documento. 4. Cuando querramos utilizar PrintPreviewControl en lugar de PrintPreviewDialog para visualizar un documento de impresin? Deberamos utilizar un PrintPreviewControl para visualizar un documento cuando necesitemos personalizar las capacidades de vista previa de impresin de una aplicacin. ____________________________________________________________ ____________________________________________________________ 5. Cerrar la solucin.

18

Informes e impresin en aplicaciones Windows Forms

Cmo utilizar el control PageSetupDialog


PageSetupDialog

Use PageSetupDialog to set page details in Windows Forms applications Border and margin adjustments Headers and footers Portrait vs. landscape To use PageSetupDialog to specify page settings 1. Create an instance of the PageSetupDialog control 2. Use ShowDialog to display the dialog at run time 3. Specify document settings by using the DefaultPageSettings property or PageSettings class CodeExample

Introduccin

El control PageSetupDialog es un cuadro de dilogo preconfigurado que podemos utilizar para establecer los detalles de presentacin de pgina para la impresin en aplicaciones Windows Forms. El control PageSetupDialog proporciona una solucin fcil para especificar las opciones de pgina en vez de configurar nuestro propio cuadro de dilogo. Con PageSetupDialog, podemos hacer que los usuarios establezcan los ajustes de bordes y mrgenes, encabezados y pies y la orientacin vertical u horizontal utilizando una herramienta familiar. Para utilizar PageSetupDialog y especificar las opciones de pgina: 1. Crear una instancia de PageSetupDialog. El primer paso al usar PageSetupDialog en una aplicacin Windows Forms es aadir un control PageSetupDialog a nuestro formulario desde el Cuadro de herramientas o crear una nueva instancia del control PageSetupDialog mediante cdigo como se muestra a continuacin:
Dim pageDlg As New PageSetupDialog()

Procedimiento: utilizar PageSetupDialog

2. Proporcionar PageSetupDialog con un objeto PageSettings que puede ser utilizado para almacenar las opciones de pgina y utilizado tanto para el objeto PrintDocument como para PageSetupDialog.
pageDlg.PageSettings = MyPageSettings

3. Utilizar el mtodo ShowDialog para visualizar el cuadro de dilogo en tiempo de ejecucin. Para visualizar el cuadro de dilogo en tiempo de ejecucin, utilice el mtodo ShowDialog como se muestra en el cdigo siguiente:
pageDlg.ShowDialog

4. Aplicar las opciones de pgina modificadas a nuestro objeto PrintDocument. Para aplicar las nuevas opciones de pgina a nuestro documento, utilizar la propiedad DefaultPageSettings del objeto PrintDocument.
PrintDocument1.DefaultPageSettings = myPageSettings

Informes e impresin en aplicaciones Windows Forms

19

Ejemplo

El cdigo siguiente muestra un ejemplo de cmo utilizar el control PageSetupDialog:


Private Sub PageSetup() Try Dim pageDialog As New PageSetupDialog() If (storedPageSettings Is Nothing) Then storedPageSettings = new PageSettings() End If pageDialog.PageSettings = storedPageSettings pageDialog.ShowDialog Catch ex As Exception MessageBox.Show(ex.Message) End Try PrintDocument1.DefaultPageSettings = storedPageSettings End Sub

Personalizar secciones del cuadro de dilogo PageSetup

El usuario puede habilitar secciones del cuadro de dilogo PageSetup para manipular la impresin, mrgenes, la orientacin del papel y el tamao. Utilizar las propiedades Margins y MinMargins para especificar los mrgenes.
PageSetupDialog1.PageSettings.Margins.Top = 200 PageSetupDialog1.PageSettings.Margins.Left = 200 PageSetupDialog1.PageSettings.Margins.Bottom = 100 PageSetupDialog1.PageSettings.Margins.Right = 100 PageSetupDialog1.MinMargins.Top = 85 PageSetupDialog1.MinMargins.Left = 75 PageSetupDialog1.MinMargins.Bottom = 100 PageSetupDialog1.MinMargins.Right = 100

Establecer las propiedades AllowPrinter, AllowOrientation, and AllowPaper a True y permitir que los usuarios especifiquen estas propiedades.
PageSetupDialog1.AllowOrientation = False PageSetupDialog1.AllowPaper = False PageSetupDialog1.AllowPrinter = False

20

Informes e impresin en aplicaciones Windows Forms

Prctica: utilizar el control PageSetupDialog


In this practice, you will Add a PageSetupDialog control to your application Create a PageSetup subroutine that displays page settings Assign the page settings to the PrintDocument object

Begin reviewing the objectives for this practice activity

8 min

Introduccin

En esta prctica, aadiremos un control PageSetupDialog y lgica de programa a un proyecto de modo que los usuarios de la aplicacin puedan especificar las opciones de pgina antes de imprimir un documento. Abrir el proyecto de la prctica 1. Utilizar el Explorador de Windows para buscar la carpeta pract03\Starter que se puede encontrar dentro del fichero practs13.zip. 2. Hacer doble clic en la solucin PageSetupDialog.sln y abrir el proyecto. Aadir el control PageSetupDialog a nuestra aplicacin 1. En el Explorador de soluciones, hacer clic en Form1.vb y a continuacin en Ver diseador. 2. En el Cuadro de herramientas, desplazarse hacia abajo hasta encontrar el control PageSetupDialog, y a continuacin hacer doble clic en PageSetupDialog. 3. Dnde aparecer el control PageSetupDialog en la ventana Vista de diseo? El control PageSetupDialog se aade a la bandeja de componentes en la parte inferior de la ventana Vista de diseo. ____________________________________________________________ ____________________________________________________________

Instrucciones

Informes e impresin en aplicaciones Windows Forms

21

Crear una subrutina PageSetup que visualice las opciones de pgina 1. En el men Ver, posicionarse sobre Mostrar tareas, y a continuacin hacer clic en Comentario. 2. En la Lista de tareas, hacer doble clic en TODO: create PageSetup subroutine. 3. Aadir la siguiente sentencia de cdigo por debajo de la lnea TODO y a continuacin presionar ENTER.
Private Sub PageSetup

4. Aadir la siguiente sentencia de cdigo a la subrutina PageSetup.


PageSetupDialog1.ShowDialog()

5. Ejecutar la aplicacin PageSetupDialog y utilizar el men o el botn para visualizar el cuadro de dilogo Page Setup. Por qu se produce un error? El control PageSetupDialog requiere que proporcionemos un objeto PageSettings que represente las opciones de pgina para el documento. ____________________________________________________________ ____________________________________________________________ 6. Cerrar la aplicacin y a continuacin aadir las siguientes lneas de cdigo en la parte superior de la subrutina PageSetup.
myPageSettings = New PageSettings PageSetupDialog1.PageSettings = myPageSettings

7. Ejecutar la aplicacin PageSetupDialog y mostrar el cuadro de dilogo Page Setup. 8. Cambiar los mrgenes Superior e Izquierda a 0,5 pulgadas y a continuacin, hacer clic en OK. 9. Mostrar una vista previa del documento de impresin. Por qu las nuevas opciones no tienen efecto? Aunque PageSetupDialog ubica las nuevas opciones en el objeto MyPageSettings, todava tenemos que asignar las opciones de pgina al objeto PrintDocument. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ 10. Cerrar PrintPreviewDialog y la aplicacin.

22

Informes e impresin en aplicaciones Windows Forms

Asignar las opciones de pgina al objeto PrintDocument 1. Aadir las siguientes lneas de cdigo en la parte inferior de la subrutina PageSetup.
If Not myPageSettings Is Nothing Then PrintDocument1.DefaultPageSettings = myPageSettings End If

2. Ejecutar la aplicacin PageSetupDialog y utilizar el men o el botn para mostrar el cuadro de dilogo PageSetup. 3. Cambiar los mrgenes Superior e Izquierdo a 0,5 pulgadas y a continuacin mostrarla vista previa del documento de impresin. 4. Abrir de nuevo el cuadro de dilogo PageSetup. Observar que las opciones de pgina se han perdido. 5. Cerrar la aplicacin y, a continuacin, en la subrutina PageSetup remplazar la lnea de cdigo myPageSettings = New PageSettings() con las siguientes lneas de cdigo:
If myPageSettings Is Nothing Then myPageSettings = New PageSettings() End If

6. Ejecutar la aplicacin PageSetupDialog y utilizar el cuadro de dilogo PageSetup para modificar las opciones de pgina del documento un par de veces. 7. Cerrar la aplicacin. Si el tiempo lo permite Examinar algunos miembros adicionales del control PageSetupDialog 1. En el Editor de cdigo, examinar el cdigo en la subrutina pageSetupButton_Click. 2. Eliminar el carcter de comentario desde la parte frontal de las lneas de cdigo una seccin a la vez y visualizar los cambios del cuadro de dilogo PageSetup y Print Preview ejecutando la aplicacin y abriendo los dos cuadros de dilogo. 3. Cerrar la aplicacin y Visual Studio .NET. 4. Cmo podra utilizar estos miembros adicionales del control PageSetupDialog? Estos miembros adicionales deberan ser utilizados para personalizar PageSetupDialog y controlar el rango de opciones que un usuario tiene permitido seleccionar. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________

Informes e impresin en aplicaciones Windows Forms

23

Cmo utilizar el control PrintDialog


PrintDialog

Use PrintDialog to specify printer-related settings Specify printer and print job properties Specify print range and collate settings To use a PrintDialog control for users to select a printer 1. Create an instance of the PrintDialog component 2. Set the Document property to the PrintDocument object 3. Capture user input by using the DialogResult property and display the Print dialog box CodeExample

Introduccin

A menudo, los usuarios necesitan seleccionar una impresora o establecer propiedades de impresin antes de un trabajo de impresin particular. Esto puede realizarse utilizando el control PrintDialog. Para utilizar el control PrintDialog e imprimir un documento: 1. Aadir un control PrintDialog a nuestro proyecto utilizando el Cuadro de herramientas o crear una instancia del control PrintDialog en tiempo de ejecucin del siguiente modo:
Dim printDialog As New PrintDialog()

Procedimiento

2. Establecer la propiedad Document del objeto PrintDialog al componente PrintDocument. Debemos establecer la propiedad Document del control PrintDialog al objeto PrintDocument para el documento que estamos imprimiendo. Establecer la propiedad Document del control PrintDialog en tiempo de diseo en la ventana Propiedades o en tiempo de ejecucin utilizando el cdigo del siguiente modo:
printDialog.Document = PrintDocument1

3. Capturar la respuesta del usuario al PrintDialog utilizando un objeto DialogResult cuando construyamos la sentencia de cdigo que muestra el cuadro de dilogo.
Dim userResponse As DialogResult = printDialog.ShowDialog

24

Informes e impresin en aplicaciones Windows Forms

Ejemplo

El siguiente cdigo utiliza el control PrintDialog para proporcionar al usuario una oportunidad de modificar las opciones de impresora y del trabajo de impresin antes de imprimir el documento.
Private Sub PrintDoc() Dim userResponse As DialogResult PrintDialog1.Document = PrintDocument1 userResponse = PrintDialog1.ShowDialog() If (userResponse = DialogResult.OK) Then PrintDocument1.Print() End If End Sub

Informes e impresin en aplicaciones Windows Forms

25

Prctica: utilizar el control PrintDialog


In this practice, you will Add a PrintDialog control to your application Create a PrintDoc subroutine that displays the print dialog Print a document by using the PrintDocument.Print method

Begin reviewing the objectives for this practice activity

8 min

Introduccin

En esta prctica, aadiremos un control PrintDialog y la lgica de programacin de modo que los usuarios de la aplicacin puedan especificar la impresora y las opciones de impresin antes de imprimir un documento. Abrir el proyecto de prctica 1. Utilice el Explorador de Windows para buscar la carpeta pract04\Starter que se puede encontrar dentro del fichero practs13.zip. 2. Hacer doble clic en el archivo de solucin PrintDialog.sln para abrir el proyecto. Aadir el control PrintDialog a nuestra aplicacin 1. En el Explorador de soluciones, hacer clic en Form1.vb, y a continuacin en el icono Ver diseador. 2. En el Cuadro de herramientas, desplazarse hacia abajo hasta que aparezca el control PrintDialog, y a continuacin hacer doble clic en PrintDialog. 3. Dnde aparece el control PrintDialog en la ventana Vista de diseo? El control PrintDialog se aade a la bandeja de componentes en la parte inferior de la ventana de Vista de diseo. ____________________________________________________________ ____________________________________________________________

Instrucciones

26

Informes e impresin en aplicaciones Windows Forms

Crear una subrutina PrintDoc que visualice el cuadro de dilogo de impresin 1. Abrir Form1 en el Editor de cdigo 2. En el men Ver, posicionarse sobre Mostrar tareas, y a continuacin hacer clic en Comentario. 3. En la Lista de tareas, hacer doble clic en TODO: create PrintDoc subroutine. 4. Aadir la siguiente instruccin de cdigo por debajo de la lnea TODO y presionar ENTER.
Private Sub PrintDoc

5. Aadir la siguiente instruccin de cdigo a la subrutina PrintDoc.


PrintDialog1.ShowDialog()

6. Ejecutar la aplicacin PrintDialog, y hacer clic en el elemento de men o en el botn que se utiliza para visualizar el cuadro de dilogo de impresin, Por qu el cuadro de dilogo no se abre correctamente? La propiedad PrintDialog.Document debe ser establecida antes de que PrintDialog pueda ser visualizada. ____________________________________________________________ ____________________________________________________________ 7. Hacer clic en OK, cerrar la aplicacin, y a continuacin aadir la siguiente lnea de cdigo en la parte superior de la subrutina PrintDoc:
PrintDialog1.Document = PrintDocument1

Imprimir un documento utilizando el mtodo PrintDocument.Print 1. Ejecutar la aplicacin y a continuacin visualizar el cuadro de dilogo Print. 2. Hacer clic en OK. 3. Por qu no se imprime el documento? PrintDialog no invoca al mtodo PrintDocument.Print; debemos aadir cdigo para hacerlo. Sin embargo, esto significa que debemos conocer qu botn puls el usuario en el cuadro de dilogo. Podemos determinarlo utilizando un objeto DialogResult. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ Nota Para ms informacin sobre el objeto DialogResult, acceder a la documentacin de ayuda de Visual Studio .NET.

Informes e impresin en aplicaciones Windows Forms

27

4. Cerrar la aplicacin y a continuacin remplazar la lnea de cdigo PrintDialog1.ShowDialog() en la subrutina PrintDoc con las lneas de cdigo siguientes:
Dim userResponse As DialogResult = PrintDialog1.ShowDialog If userResponse = DialogResult.OK Then PrintDocument1.Print() End If

5. Ejecutar la aplicacin PrintDialog y visualizar el cuadro de dilogo de impresin. 6. Hacer clic en OK, y a continuacin dentro del cuadro Output File Name, teclear C:\Text 7. Hacer clic en OK. Observar que se abre automticamente un cuadro de dilogo Imprimiendo, proporcionando al usuario la oportunidad de cancelar el trabajo de impresin. 8. Cerrar la aplicacin y cerrar Visual Studio .NET.

28

Informes e impresin en aplicaciones Windows Forms

Leccin: creacin del contenido del documento de impresin utilizando GDI+


What Is GDI+? What Is the Graphics Object? How to Create and Use Pens, Brushes, and Fonts How to Draw and Measure Text in the PrintPage Event Procedure How to Generate Print Content by Using StreamReader Demonstration: Constructing Print Document Content by Using GDI+ Practice: Constructing Print Document Content by Using GDI+

Introduccin

En aplicaciones Windows Forms, utilizamos GDI+ y el evento PrintPage del objeto PrintDocument para construir los contenidos de un documento de impresin. Esta leccin presenta GDI+ y cubre cmo utilizar mtodos de GDI+ para pintar el contenido de texto y grficos de un documento de impresin desde una aplicacin Windows Forms de .NET. Despus de completar esta leccin, seremos capaces de: Identificar los componentes de GDI+ y utilizar GDI+ en nuestras aplicaciones. Utilizar un objeto Graphics como contenedor para crear los contenidos de un documento de impresin. Crear y utilizar los lpices, pinceles y fuentes requeridos para dibujar objetos de texto y grficos. Utilizar los mtodos de dibujo de un objeto Graphics para dibujar texto y grficos vectoriales bidimensionales (2-D). Generar contenido de impresin utilizando StreamReader.

Objetivos de la leccin

Informes e impresin en aplicaciones Windows Forms

29

Qu es GDI+?
GDI+ (the new graphics device interface) Enables applications to generate graphics and formatted text for the video display and the printer Allows application developers to create deviceindependent applications Three parts of GDI+ 2-D vector graphics Text Images

Introduccin

GDI+ es un interfaz de dispositivos grficos que podemos utilizar para dibujar grficos vectoriales grficos vectoriales bidimensionales, texto e imgenes de mapas de bits. GDI+ expande las caractersticas de GDI proporcionando nuevas funcionalidades como pinceles de gradiente (gradient brushes) y mezclas alfa (alpha blending). GDI+ facilita y flexibiliza la programacin grfica. Permite a las aplicaciones generar grficos y texto formateado para la salida de vdeo y la impresora. Permite tambin a los desarrolladores de aplicaciones crear aplicaciones independientes del dispositivo. Por ejemplo, podemos crear una subrutina PrintPage para construir contenido grfico que puede ser impreso en la mayora de impresoras grficas o que puede ser mostrado como vista previa en una pantalla grfica. Los servicios de GDI+ se dividen en tres categoras principales: Grficos vectoriales 2-D Grficos vectoriales implica dibujar lneas, curvas y figuras definidas por un conjunto de puntos en un sistema de coordenadas. GDI+ proporciona clases y estructuras que almacenan informacin sobre estos objetos. Por ejemplo, el objeto Rectangle almacena informacin sobre la ubicacin y el tamao de un rectngulo y la clase Graphics tiene mtodos para dibujar lneas, curvas y otras formas. Texto GDI+ nos permite dibujar texto en una amplia variedad de fuentes, tamaos y estilos. Imgenes Ciertos grficos no pueden ser visualizados como grficos vectoriales 2-D y deben ser visualizados como mapas de bits. GDI+ proporciona la clase Bitmap para visualizar, manipular y guardar mapas de bits.

Tres parte de GDI+

30

Informes e impresin en aplicaciones Windows Forms

Qu es el objeto Graphics?
Graphics Object: Provides the drawing surface on which content is placed Provides methods for drawing text and graphics at specified locations Provides various tools for modifying its contents
Dim myGraphic as Graphics Dim myGraphic as Graphics ' draw lines or outlined shapes using a Pen ' draw lines or outlined shapes using a Pen myGraphic.DrawLine(myPen,X1,Y1,X2,Y2) myGraphic.DrawLine(myPen,X1,Y1,X2,Y2) ' draw filled shapes using a Brush ' draw filled shapes using a Brush myGraphic.FillRectangle(myBrush,X1,Y1,X2,Y2) myGraphic.FillRectangle(myBrush,X1,Y1,X2,Y2) ' draw text using a Font and a Brush ' draw text using a Font and a Brush myGraphic.DrawString(myText,myFont,myBrush,X1,Y1) myGraphic.DrawString(myText,myFont,myBrush,X1,Y1)

Introduccin Rol del objeto Graphics en GDI+

Para dibujar el texto, lneas y formas que forman el contenido de un documento de impresin, debemos utilizar un objeto Graphics. El objeto Graphics es esencial a GDI+ en la construccin de contenido para el documento de impresin. Proporciona la superficie de dibujo para los mtodos de dibujo de GDI+. Para generar contenido del documento de impresin con GDI+: Establecer las propiedades del objeto Graphics. Invocar los mtodos del objeto Graphics para dibujar texto, lneas y formas.

Mtodos del objeto Graphics

El objeto Graphics proporciona una extensa variedad de mtodos que pueden ser utilizados para dibujar texto, lneas y formas. Tambin hay mtodos para escalar, transformar y medir los contenidos que pueden ser dibujados en su superficie. Algunos de estos mtodos ms habituales se listan en la siguiente tabla:
Mtodo Clear DrawLine DrawRectangle DrawString FillRectangle MeasureString Descripcin Limpia la superficie de dibujo completa y la rellena con el color de fondo especificado. Dibuja una lnea que conecta los dos puntos especificados por pares de coordenadas. Dibuja un rectngulo especificado por un par de coordenadas, una anchura y una altura. Dibuja la cadena de texto especificada en la ubicacin especificada con los objetos Brush y Font. Rellena el interior de un rectngulo. Mide la cadena especificada cuando se dibuja con la fuente especificada y formateada con el formato especificado.

Informes e impresin en aplicaciones Windows Forms

31

Ejemplo

El siguiente cdigo muestra cmo dibujar objetos utilizando el objeto Graphics proporcionado por el parmetro PrintPageEventArgs del evento PrintDocument.PrintPage.
Create a graphics object Dim myGraphic as Graphics ' draw lines or outlined shapes using a Pen myGraphic.DrawLine(myPen,X1,Y1,X2,Y2) myGraphic.DrawRectangle(myPen, X1, Y1, X2, Y2) ' draw filled shapes using a Brush myGraphic.FillRectangle(myBrush,X1,Y1,X2,Y2) ' draw text using a Font and a Brush myGraphic.DrawString(myText, myFont, myBrush, X1, Y1) ' measure text width on the Graphics object using a Font textWidth = myGraphic.MeasureString(myText, myFont).Width

32

Informes e impresin en aplicaciones Windows Forms

Cmo crear y utilizar lpices, pinceles y fuentes


Pens A pen is required to draw lines and outlined shapes
Dim myPen As New Pen(Color.Blue) Dim myPen As New Pen(Color.Blue)

Brushes

A brush is required to draw filled shapes or draw text


Dim myBrush As New SolidBrush(Color.Blue) Dim myBrush As New SolidBrush(Color.Blue)

Fonts

A font is required to draw text of a single size or style


Dim myFont As Font("Arial", 16, FontStyle.Bold) Dim myFont As Font("Arial", 16, FontStyle.Bold)

Introduccin Procedimiento: crear lpices

Utilizamos objetos Pen, Brush y Font para construir grficos vectoriales 2-D, texto e imgenes de mapas de bits con GDI+. Un lpiz se utiliza para dibujar lneas, curvas y formas con contorno. Para crear un nuevo lpiz, debemos especificar un color. Tambin tenemos la opcin de especificar valores para las propiedades de anchura y estilo de lnea: 1. Crear un nuevo lpiz. El siguiente ejemplo de cdigo ilustra la creacin de lpices utilizando distintas sintaxis.
Dim myBluePen As New Pen(Color.Blue) Dim myRedPen as Pen = New Pen(Color.Red) Dim myBlackPen As Pen = Pens.Black

2. Aplicar propiedades de anchura y estilo. La propiedad Width de un Pen es de tipo Integer u tiene un valor por defecto de 1 (las unidades las establece el objeto Graphics). La propiedad DashStyle es tambin de tipo Integer, pero nuestro cdigo ser ms fcil de leer si utilizamos la enumeracin DashStyle proporcionada por el espacio de nombres Drawing2D. Aunque la propiedad Width puede establecerse cuando instanciamos un nuevo Pen, el estilo de lnea debe ser aplicado una vez que se ha creado Pen. Los siguientes ejemplos de cdigo demuestran la creacin de lpices con diferentes propiedades de anchura y estilos. Los valores por defecto para Width es 1 y para Style es Solid.
Dim myWideRedPen as Pen = New Pen(Color.Red, 4) Dim myDashedPen As New Pen(Color.Black) myDashedPen.DashStyle = Drawing2D.DashStyle.Dash myDashedPen.DashCap = Drawing2D.DashCap.Round

Informes e impresin en aplicaciones Windows Forms

33

Procedimiento: crear pinceles

Objetos Brush se utilizan para dibujar texto y formas rellenas. Podemos crear pinceles que producen rellenos Solid, Hatched, Textured y Gradient. Crear un nuevo Brush. Los siguientes ejemplos de cdigo demuestran la creacin de un pincel azul slido y un pincel de gradiente linear utilizando blanco y azul claro mezclados horizontalmente.
Dim myBrush As New SolidBrush(Color.Blue) Dim myGradientBrush as New LinearGradientBrush( _ myRectangle As New Rectangle(0,0,100,100), _ Color.White, _ Color.LightBlue, _ LinearGradientMode.Horizontal)

Para ms informacin sobre Hatched, Textured y Gradient, ver Brushes and Filled Shapes en el Software Development Kit (SDK) del .NET Framework. Procedimiento: crear fuentes Antes de que podamos pintar texto con GDI+, debemos construir un objeto Font. La instruccin de declaracin para un objeto Font puede incluir parmetros para la FontFamily (como Arial), Size, Style y GraphicsUnits utilizados por el parmetro Size. Las propiedades FontFamily y Size son obligatorias cuando creamos una nueva fuente. Crear un nuevo objeto Font. El siguiente ejemplo de cdigo crea una fuente Arial de tamao 10 y una fuente Lucida con un estilo definido en negrita y 12 milmetros de tamao.
Dim fontSmall As Font = New Font("Arial", 10) Dim fontLarge As Font fontLarge = New Font("Lucida", 12, _ FontStyle.Bold, GraphicsUnit.Millimeters)

34

Informes e impresin en aplicaciones Windows Forms

Cmo dibujar y medir el texto en el procedimiento de evento PrintPage


To draw text 1. Calculate the location for the text 2. Select the Font and Brush that you want to use for this text 3. Call the Graphics.DrawString method
e.Graphics.DrawString(myText, myFont, myBrush, X1, Y1) e.Graphics.DrawString(myText, myFont, myBrush, X1, Y1)

To measure text
textWidth = e.Graphics.MeasureString(myText, textWidth = e.Graphics.MeasureString(myText, myFont).Width myFont).Width textHeight = e.Graphics.MeasureString(myText, textHeight = e.Graphics.MeasureString(myText, myFont).Height myFont).Height

Introduccin

GDI+ nos permite dibujar y medir texto. Podemos dibujar texto utilizando el mtodo DrawString del objeto Graphics. Para dibujar texto, debemos tener un objeto Brush y un objeto Font. Si necesitamos determinar la anchura o altura del texto tal y como ser dibujado en un documento de impresin u otro objeto Graphics, podemos utilizar el mtodo MeasureString del objeto Graphics. Por ejemplo, debemos conocer la anchura y longitud de una cadena tal y como aparece en la pgina para centrar la cadena en una regin de la pgina. MeasureString puede tambin utilizarse para determinar cuntas lneas de texto cabrn en una pgina, si una lnea de texto cabr entre los mrgenes o alinear texto a la derecha.

Procedimiento: dibujar texto

Para construir texto para nuestro documento de impresin en el procedimiento de evento PrintPage: 1. Calcular la ubicacin en la pgina dnde se ubicar el texto. 2. Seleccionar Font y Brush que queremos utilizar para este texto. Podemos utilizar Fonts y Brushes que ya tengamos creados como crear nuevos. Para ms informacin sobre crear Fonts y Brushes, ver el tpico Cmo crear y utilizar lpices, pinceles y fuentes en esta leccin.. 3. Invocar el mtodo DrawString. Para construir el texto, invocar el mtodo DrawString del objeto Graphics.
e.Graphics.DrawString(myText, myFont, myBrush, X1, Y1)

Informes e impresin en aplicaciones Windows Forms

35

Procedimiento: medir texto

Para medir texto, aadir cdigo como se muestra en el procesador de eventos PrintPage. El siguiente cdigo mide la anchura y la altura de la cadena especificada.
textWidth = e.Graphics.MeasureString(myText, myFont).Width textHeight = e.Graphics.MeasureString(myText, myFont).Height

Otra opcin para obtener la altura de nuestro texto es utilizar el mtodo GetHeight para Font y pasarle el objeto Graphics del siguiente modo:
textHeight = myFont.GetHeight(e.Graphics)

36

Informes e impresin en aplicaciones Windows Forms

Cmo generar contenido de impresin utilizando StreamReader


Use StreamReader to read lines of information from a standard text file
Private Sub btnPrintPreviewControl_Click(ByVal Private Sub btnPrintPreviewControl_Click(ByVal sender As System.Object, ByVal e As _ sender As System.Object, ByVal e As _ System.EventArgs) Handles _ System.EventArgs) Handles _ btnPrintPreviewControl.Click btnPrintPreviewControl.Click Try Try StreamToPrint = New StreamToPrint = New StreamReader(PrintMe.Txt) StreamReader(PrintMe.Txt) Try Try PrintPreviewControl() PrintPreviewControl() Finally Finally StreamToPrint.Close() StreamToPrint.Close() End Try End Try

Introduccin

Adems de utilizar GDI+ para generar contenido de impresin, podemos tambin utilizar StreamReader como un proveedor de entrada. Podemos utilizar StreamReader para leer lneas de informacin desde un archivo de texto estndar. El siguiente ejemplo demuestra cmo utilizar StreamReader con PrintPreviewControl. Cuando se hace clic en el botn Print Preview, el flujo de texto se lee desde el archivo PrintMe.txt.
Private Sub btnPrintPreviewControl_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _ btnPrintPreviewControl.Click Try streamToPrint = New StreamReader("PrintMe.Txt") Try PrintPreview() Finally streamToPrint.Close() End Try Catch Ex As Exception MessageBox.Show(Ex.Message) End Try

Ejemplo

Informes e impresin en aplicaciones Windows Forms

37

El siguiente cdigo muestra que si no se lee ningn texto desde el StreamReader, la impresin finaliza o verifica si hay ms pginas a imprimir.
' inside the PrintPage event handler While currentLine < linesPerPage ' read a line of text from the StreamReader object textLine = streamToPrint.ReadLine() If textLine Is Nothing Then Exit While ' position text, draw text, increment currentLine End While 'If more lines exist in the file, print another page. If Not (textLine Is Nothing) Then e.HasMorePages = True Else e.HasMorePages = False End If

38

Informes e impresin en aplicaciones Windows Forms

Demostracin: creacin del contenido del documento de impresin utilizando GDI+


In this demonstration, you see how to construct print document content by using GDI+

Introduccin Instrucciones

En esta demostracin, veremos cmo crear contenido de documentos de impresin utilizando GDI+. Abrir los proyectos 1. Iniciar dos instancias de Visual Studio .NET. 2. Abrir el archivo de solucin PurchaseOrderApplication en una instancia de Visual Studio .NET y el archivo de solucin PrintingForm2565Class en la otra. Los archivos de solucin pueden encontrarse bajo carpeta_instalacin\Sampapps, en las carletas denominadas OrderApplication y PrintingForm2565Class. Examinar y modificar cdigo en el proyecto PrintingForm2565Class 1. Abrir PrintingForm2565Class.vb en el Editor de cdigo. 2. Mencionar que esta clase hereda de la clase PrintDocument. 3. Describir las subrutinas que se utilizan para: definir las regiones del formulario, dibujar el texto y los objetos vectoriales 2-D que forman el formulario en blanco, recibir contenido de texto desde la aplicacin host y rellenar el contenido en el formulario. 4. Desplazarse hacia abajo hasta la subrutina PrintingEmptyForm2565, y mostrar el cdigo utilizado para crear las fuentes y los pinceles. 5. Desplazarse hacia abajo y mostrar algunas de las instrucciones de cdigo GDI+ que dibujan las lneas y formas rellenas. 6. Desplazarse ms hacia abajo y mostrar el proceso requerido para centrar las etiquetas de elementos de compra en la fila de encabezado de la tabla de elementos de compra. 7. Desplazarse de nuevo hacia la parte superior de esta subrutina y modificar alguna de las propiedades del lpiz y de los pinceles. Regenerar la clase.

Informes e impresin en aplicaciones Windows Forms

39

Examinar y ejecutar el proyecto PurchaseOrderApplication 1. Abrir MainForm.vb en el Editor de cdigo. 2. Describir las subrutinas que se utilizan para: leer contenido desde el formulario, pasar contenido del formulario a la clase de impresin, previsualizar el documento de impresin, modificar opciones de pgina e imprimir el documento. 3. En el Explorador de soluciones, eliminar la referencia a PrintingForm2565Class desde el proyecto PurchaseOrderApplication, y a continuacin aadir una referencia a la clase recientemente creada navegando hasta la carpeta bin de la carpeta PrintingForm2565Class y abriendo el archivo PrintingFomr2565Class.dll. 4. Regenerar la solucin PurchaseOrderApplication, y a continuacin ejecutar la aplicacin. 5. Abrir el cuadro de dilogo Print Preview para mostrar nuestras modificaciones.

40

Informes e impresin en aplicaciones Windows Forms

Prctica: creacin del contenido del documento de impresin utilizando GDI+


In this practice, you will Create pens, brushes, and fonts Create 2-D vector objects Measure and position text on the page

Begin reviewing the objectives for this practice activity

15 min

Introduccin Instrucciones

En esta prctica, crearemos contenido de documentos de impresin utilizando vectores 2-D y texto en GDI+. Abrir el proyecto de la prctica 1. Utilizar el Explorador de Windows para buscar la carpeta pract05\Starter que se puede encontrar dentro del fichero practs13.zip. 2. Hacer doble clic sobre el archivo de solucin PrintPageCode.sln para abrir el proyecto. Crear lpices, pinceles y fuentes 1. Abrir Form1 en el Editor de cdigo. 2. En el men Ver, posicionarse sobre Mostrar tareas, y a continuacin hacer clic en Comentario. 3. En la Lista de tareas, hacer doble clic en TODO: create pens. 4. Aadir las siguientes instrucciones de cdigo por debajo de la lnea TODO.
Dim penWideRed As Pen = New Pen(Color.Red, 10) Dim penDashedBlack As Pen = New Pen(Color.Black, 6) penDashedBlack.DashStyle = DashStyle.Dash penDashedBlack.DashCap = DashCap.Round

5. En la Lista de tareas, hacer doble clic en TODO: create brushes. 6. Aadir las siguientes instrucciones de cdigo por debajo de la lnea TODO.
Dim brushBlue As Brush = New SolidBrush(Color.Blue) Dim brushBlack As Brush = Brushes.Black

7. En la Lista de tareas, hacer doble clic en TODO: create fonts.

Informes e impresin en aplicaciones Windows Forms

41

8. Aadir las siguientes instrucciones de cdigo por debajo de la lnea TODO.


Dim fontMedium As Font = New Font("Arial", 14) Dim fontLargeBold As Font fontLargeBold = New Font("Arial", 36, FontStyle.Bold)

9. Alguna de las instrucciones de cdigo que hemos introducido requieren una referencia al espacio de nombres Drawing2D? S. Las instrucciones de cdigo utilizadas para establecer DashStyle y DashCap utilizan enumeraciones proporcionadas por el espacio de nombres Drawing2D. ____________________________________________________________ ____________________________________________________________

Crear objetos vectoriales 2-D 1. En la Lista de tareas, hacer doble clic en TODO: draw outline shapes. 2. Aadir las siguientes instrucciones de cdigo por debajo de la lnea TODO.
e.Graphics.DrawLine(penWideRed, hPos1, yPos1, hPos2, yPos2) e.Graphics.DrawRectangle(penDashedBlack, _ hPos1, _ vPos1, _ rectWidth, _ rectHeight)

3. En la Lista de tareas, hacer doble clic en TODO: draw filled shapes. 4. Aadir las siguientes instrucciones de cdigo por debajo de la lnea TODO.
Dim fillRectangle As Rectangle fillRectangle = New Rectangle( _ lgRectangle.Left, _ lgRectangle.Bottom, _ lgRectangle.Width, _ lgRectangle.Height) e.Graphics.FillRectangle(brushBlue, fillRectangle)

Measure and position text on the page 1. En la Lista de tareas, hacer doble clic en TODO: draw centered text. 2. Aadir las siguientes instrucciones de cdigo por debajo de la lnea TODO.
textWidth = e.Graphics.MeasureString(centeredText, _ fontMedium).Width textHeight = fontMedium.GetHeight(e.Graphics) hPos = rectText.Left + (rectText.Width textWidth) / 2 vPos = rectText.Top + (rectText.Height textHeight) / 2 e.Graphics.DrawRectangle(Pens.Black, rectText) e.Graphics.DrawString(stringMyText, _ fontLargeBold, _ brushBlack, _ poshorizontal, _ posVertical)

3. Ejecutar nuestra aplicacin, y hacer clic en Print Preview para visualizar la salida GDI+.

42

Informes e impresin en aplicaciones Windows Forms

4. Cerrar el formulario de vista previa, hacer clic en Draw gradient text, y a continuacin hacer clic en Print Preview. 5. Cmo dibujaramos texto alineado a la derecha? Podemos dibujar texto alineado a la derecha midiendo la cadena de texto y estableciendo una posicin horizontal igual a la posicin de la derecha que definimos menos la anchura de la cadena de texto. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ Si el tiempo lo permite, examinar el cdigo utilizado para crear el texto relleno de gradiente. 6. Guardar nuestra aplicacin y cerrar Visual Studio .NET.

Informes e impresin en aplicaciones Windows Forms

43

Leccin: crear informes utilizando Crystal Reports


Crystal Reports How to Create and Format a Report by Using Crystal Reports How to View a Report by Using Crystal Report Viewer How to Add DataSets to a Report Practice: Creating and Viewing Crystal Reports

Introduccin

Hay muchas formas de presentar datos a los usuarios. Por ejemplo, podemos escribir cdigo que recorra conjuntos de resultados y los imprima dentro de nuestra aplicacin basada en Windows. Sin embargo, utilizando tales mtodos, cualquier trabajo ms all de dar un formato bsico ser complicado y dificultoso de programar. Con Crystal Reports para Microsoft Visual Studio .NET, podemos rpidamente crear informes complejos y de apariencia profesional. En vez de escribir cdigo, utilizamos el interfaz de Crystal Report Designer para crear y formatear el informe que necesitamos. El potente motor Report Engine procesa el criterio de formateo, agrupacin y creacin de grficos que especifiquemos. Esta leccin presenta Crystal Reports para Visual Studio .NET y tambin cubre cmo utilizar El Asistente de informes para crear y formatear informes.

Objetivos de la leccin

Tras completar esta leccin, seremos capaces de: Explicar cmo Crystal Reports ayuda en la creacin de informes. Crear y formatear un informe utilizando Crystal Reports. Visualizar un informe utilizando Crystal Report Viewer. Aadir conjuntos de datos (datasets) a un informe.

44

Informes e impresin en aplicaciones Windows Forms

Crystal Reports
Crystal Reports Is the standard reporting tool in .NET Allows you to create a report from the beginning or use one of the Report Expert Wizards Benefits You can use any programming language Report viewers for Windows-based and Web applications Run-time customization of reports Easy interaction with reports Data visualization and analysis capabilities
http://msdn.microsoft.com/vstudio/partners/tools /crystaldecisions.asp

Introduccin

Crystal Reports es la herramienta de reporting estndar en Visual Studio .NET. Nos permite crear un informe desde cero o utilizar alguno de los Asistentes de informes. Antes de aprender cmo utilizar Crystal Reports para crear y formatear informes, debemos entender los beneficios de utilizar Crystal Reports. Crystal Reports: Nos permite escoger el lenguaje y proyecto. Utilizar el lenguaje de programacin que queramos y acceder a Crystal Report Designer desde cualquier proyecto. Proporciona visores de informes para aplicaciones Windows y Web. Crystal Reports proporciona dos visores que podemos utilizar para visualizar nuestro informe en nuestra aplicacin: Web Forms Viewer para aplicaciones Web y Windows Forms Viewer para aplicaciones basadas en Windows. Permite personalizacin en tiempo de ejecucin de informes. Crystal Reports permite al visor interactuar con otros controles en tiempo de ejecucin. Con la personalizacin en tiempo de ejecucin, los usuarios pueden visualizar diferentes informes o cambiar el formato, seleccin de datos o las opciones de exportacin de un informe existente. Permite a los usuarios interactuar fcilmente con los informes. Como Crystal Reports puede interactuar con otros controles, los usuarios pueden filtrar informacin de los informes haciendo clic en un botn o seleccionando desde un cuadro de seleccin. Proporciona capacidades de visualizacin de datos y anlisis. Crystal Reports proporciona a los desarrolladores capacidades de visualizacin de datos y anlisis. Utiliza una arquitectura abierta y extensible, con estndares como XML, para permitirnos compartir informes e informacin a travs de la Web. Tambin ofrece caractersticas como detalles en los grficos, navegacin y bsqueda de texto.

Beneficios de utilizar Crystal Reports

Informes e impresin en aplicaciones Windows Forms

45

Cmo crear y formatear un informe utilizando Crystal Reports

Open the Open the Report Report Expert Expert

Choose a Choose a template template

Choose a data source

Creating a Crystal Report by Using the Report Expert

Select the Select the required required fields fields

Format Format the report the report

Generate Generate a report a report

Group items and create formulas

Introduccin

Podemos utilizar Crystal Reports para aadir capacidades de reporting a nuestra aplicacin. Crystal Reports nos permite crear un informe desde el principio o utilizar el Asistente de informes, que nos ayuda a crear un informe utilizando un asistente. Para crear y formatear informes utilizando el Asistente de informes: 1. Abrir el Asistente de informes. a. En el Explorador de soluciones, hacer clic con el botn derecho sobre el nombre de proyecto, posicionarse en Agregar, y seleccionar Agregar nuevo elemento desde el men contextual. b. En el cuadro de dilogo Agregar nuevo elemento, en el panel Plantillas, hacer clic en Crystal Report. c. En el cuadro Nombre, teclear un nombre de informe con extensin .rpt. d. Hacer clic en Abrir para invocar el Diseador Crystal Report, que nos ayudar a crear y disear el nuevo informe. e. En Galera de Crystal Report, seleccionar la opcin Mediante el Asistente de Informes. 2. Seleccionar una plantilla. El Asistente de informes proporciona varias plantillas para crear un informe. Algunas de las plantillas son las siguientes: Estndar Carta modelo Formulario Tablas cruzadas Subinforme Etiqueta Profundizar

Procedimiento; crear y formatear un informe utilizando el Asistente de informes

46

Informes e impresin en aplicaciones Windows Forms

Para obtener ms informacin sobre cada una de las plantillas, en la documentacin de ayuda de Visual Studio .NET, buscar utilizando la frase Crystal Reports Experts. 3. Seleccione una fuente de datos. Seleccione la fuente de datos a la que referenciar nuestro informe. Podemos utilizar ms de una fuente de datos en un informe. Podemos tambin seleccionar las tablas de la base de datos que queremos utilizar en el informe. Crystal Reports automticamente enlazar las tablas, o podemos especificar cmo queremos las tablas enlazadas. Las tablas de bases de datos se enlazan de modo que los registros de una base de datos se corresponden con los registros relacionados de otra. 4. Seleccionar los campos requeridos. Tras seleccionar la fuente de datos, seleccionar los campos que queremos visualizar en el informe. 5. Agrupar elementos y crear frmulas. Cuando insertamos por primera vez un campo de base de datos en nuestro informe, los datos en los campos aparecen en el orden en que se introdujeron originalmente en la base de datos. Agrupar, ordenar y totalizar ayudan a convertir datos desorganizados en informacin til en un informe. En la mayora de casos, los datos que necesita un informe ya existen en los campos de las tablas de la base de datos. A veces, necesitamos incorporar informacin adicional en el informe que no existe en ninguno de los campos de datos. En casos como este, debemos crear una frmula. Hay cuatro grupos de frmulas diferentes en Crystal Reports: informe, formateo condicional seleccin y bsqueda. La mayora de las formulas en un informe utilizan las frmulas de informes y formateo condicional. Para ms informacin sobre cmo crear y utilizar estas frmulas, en la documentacin de ayuda de Visual Studio .NET, buscar utilizando la frase Formula Overview. 6. Generar el informe. Una vez que hayamos aadido los campos requeridos y frmulas al informe, hacer clic en Finalizar para generar el informe. 7. Formatear el informe. Una vez que el informe ha sido generado, podemos desear realizar cambios a la presentacin y al diseo del informe, as como a la apariencia del texto, objetos o a todas las secciones del informe. Podemos utilizar varias opciones de formateo para cambiar la presentacin de nuestros informes. Para formatear un objeto, hacer clic con el botn derecho sobre el objeto, y a continuacin hacer clic en Format. Para formatear la seccin de un informe, hacer clic con el botn derecho en la seccin del informe, y a continuacin hacer clic en Dar formato a seccin.

Informes e impresin en aplicaciones Windows Forms

47

Cmo visualizar un informe utilizando Crystal Report Viewer


To View a Report by Using Crystal Report Viewer

Add the Crystal Report Viewer control to the form Set ReportSource to the name of the report that is displayed Use ShowZoomButton to zoom in and zoom out on the report Use ShowPrintButton to print the report

Introduccin

Visual Studio .NET incluye un control Crystal Report Viewer que nos permite visualizar un informe en tiempo de ejecucin. Para especificar el informe que queremos visualizar, establecemos la propiedad ReportSource del visualizador. Para visualizar un informe utilizando el control Crystal Report Viewer: 1. Aadir un control Crystal Report Viewer al formulario. El Cuadro de herramientas de controles incluye el control Crystal Report Viewer. Para aadir el control al formulario, arrastrar el control desde el Cuadro de herramientas al formulario. 2. Establecer la propiedad ReportSource del visualizador. El siguiente paso es establecer la propiedad ReportSource del visualizador Crystal Report al nombre del informe que se visualizar. Podemos establecer la propiedad ReportSource en la ventana Propiedades en tiempo de diseo o en tiempo de ejecucin. 3. Utilizar la propiedad ShowZoomButton para realizar zoom in o zoom out en los informes. El visualizador de Crystal Report incluye ShowZoomButton para realizar zoom in o zoom out sobre los informes. Para activar esta propiedad, establecer la propiedad ShowZoomButton a True en la ventana Propiedades. 4. Utilizar la propiedad ShowPrintButton para imprimir el informe. La propiedad ShowPrintButton nos permite imprimir el informe. Establecer la propiedad ShowPrintButton a True para habilitar el botn en el visualizador.

Procedimiento: visualizar un informe

48

Informes e impresin en aplicaciones Windows Forms

Cmo aadir DataSets a un informe


Adding datasets to reports allows you to create reports that are disconnected from the database To add datasets to a report, add the code to the Form_Load event
Private rpt As New OrderHistory() Private rpt As New OrderHistory() Private dsReportInfo As New DataSet() Private dsReportInfo As New DataSet() dsReportInfo.ReadXml("NorthwindData.xml") dsReportInfo.ReadXml("NorthwindData.xml") rpt.SetDataSource(dsReportInfo) rpt.SetDataSource(dsReportInfo) CrystalReportViewer1.ReportSource = rpt CrystalReportViewer1.ReportSource = rpt

Introduccin Procedimiento: aadir un dataset ADO.NET a un informe

Crystal Reports para Visual Studio .NET soporta crear informes que acceden a datasets ADO.NET. Para aadir un dataset ADO.NET a un informe: 1. Crear una instancia del informe. Para que el informe visualice los datos en tiempo de ejecucin, primero debemos crear una instancia del informe:
Private rpt as New OrderHistory()

2. Generar una instancia en tiempo de diseo del dataset. La instancia en tiempo de diseo del dataset expone los campos en el dataset al Asistente de informes. El dataset en tiempo de diseo contiene nicamente la descripcin de los datos y no los datos actuales. Por tanto, cuando trabajamos con un informe conectado a un objeto dataset, no podemos buscar datos de campos en Crystal Report Designer en tiempo de diseo.
Private dsReportInfo As New DataSet()

3. Poblar el dataset.
dsReportInfo.ReadXml("NorthwindData.xml")

4. Invocar el mtodo SetDataSource del informe y pasar una instancia del dataset poblado.
Rpt.SetDataSource(dsReportInfo)

5. Establecer la propiedad ReportSource de Crystal Report Viewer a la instancia del informe.


CrystalReportViewer1.ReportSource = rpt

Informes e impresin en aplicaciones Windows Forms

49

Prctica: crear y visualizar informes Crystal Reports


In this practice, you will Configure the SqlConnection1 control on Form1 to connect to the pubs database Create a Crystal Report Add a Crystal Report Viewer control to Form1

Begin reviewing the objectives for this practice activity

12 min

Introduccin Instrucciones

En esta prctica, podremos crear y visualizar informes Crystal Reports. Abrir el proyecto de prctica 1. Utilizar el Explorador de Windows para buscar la carpeta pract06\Starter que se puede encontrar dentro del fichero practs13.zip. 2. Hacer doble clic en el archivo de solucin CrystalReport.sln para abrir el proyecto. Configurar el control SQLConnection1 de Form1 para que se conecte a la base de datos Pubs 1. Abrir Form1 en la vista de diseo. 2. Seleccionar SQLConnection1, y desde la ventana de Propiedades, hacer clic en la propiedad ConnectionString, hacer clic sobre la flecha y a continuacin hacer clic en Nueva conexin. Nota Utilizar la informacin de conexin existente para la base de datos pubs si ya existe y saltar al siguiente procedimiento. 3. En el cuadro de dilogo Propiedades del enlace de datos, teclear nombre_de_mquina\MOC en dnde nombre_de_mquina es el nombre de su ordenador. 4. Seleccionar la opcin Utilizar la seguridad integrada de Windows NT. 5. Seleccionar la base de datos pubs desde la lista desplegable, hacer clic en Probar conexin para garantizar que podemos acceder a la base de datos pubs, hacer clic en OK, y clic en OK de nuevo. Crear un informe Crystal Report 1. En el men Archivo, hacer clic en Agregar nuevo elemento.

50

Informes e impresin en aplicaciones Windows Forms

2. En el cuadro de dilogo Agregar nuevo elemento, bajo Plantilla, hacer clic en Crystal Report. 3. Establecer el nombre del informe a StoreSalesReport.rpt, y a continuacin hacer clic en Abrir. 4. Cerrar el cuadro de dilogo Asistente de Registro de Crystal Decisions. 5. En el cuadro de dilogo Galera de Crystal Report, hacer clic en Aceptar. 6. En la pestaa Datos, expandir Datos del proyecto, expandir ADO.NET DataSets, y a continuacin expandir CrystalReport.StoreSalesDataSet. 7. Hacer clic en Insertar tabla, y a continuacin hacer clic en Siguiente. 8. En la pestaa Campos, en la lista Campos disponibles, hacer clic en stor_id y a continuacin hacer clic en Agregar. 9. Repetir el paso 8 para aadir todos los campos que estn listados debajo de la tabla stores en la lista Campos disponibles, y a continuacin hacer clic en Siguiente. 10. En la pestaa Grupo, en la lista Campos disponibles, debajo de Report Fields, hacer clic en stores.stor_name, hacer clic en Agregar, y a continuacin hacer clic en Siguiente. 11. En la etiqueta Total, en la lista Campos resumen, hacer clic en stores.qty, hacer clic en Eliminar, y a continuacin hacer clic en la etiqueta Estilo. 12. Establecer el ttulo a Store Sales, y a continuacin hacer clic en Finalizar. Agregar un control Crystal Report Viewer a Form1 1. Abrir la vista de diseo de Form1. 2. En el Cuadro de herramientas, hacer doble clic en CrystalReportViewer. 3. Establecer la propiedad Dock de CrystalReportViewer de modo que el control se muestre en el formulario completo. 4. Abrir Form1 en el Editor de cdigo. 5. En el men Ver, posicionarse sobre Mostrar tareas, y a continuacin hacer clic en Comentario. 6. En la Lista de tareas, hacer doble clic en TODO 1: create an instance of StoreSalesReport. 7. Aadir la siguiente instruccin de cdigo debajo de la lnea TODO:
Private report As StoreSalesReport = New StoreSalesReport()

8. En la Lista de tareas, hacer doble clic en TODO 2: Call the SetDataSource method of report and pass StoreSalesDataSet1. 9. Aadir la siguiente instruccin de cdigo debajo de la lnea TODO:
report.SetDataSource(StoreSalesDataSet1) CrystalReportViewer1.ReportSource = report

10. Generar y ejecutar nuestra aplicacin. 11. Utilizar el control CrystalReportViewer para examinar nuestro informe. Observar las caractersticas proporcionadas en la barra de herramientas del visualizador. 12. Guardar nuestro proyecto, y a continuacin cerrar Visual Studio .NET.