El diseñador de informes abunda en un posibilidades funcionales que muchos usuarios no utilizan. Aveces la abundancia de iconos y menús solo destrae. Por lo cual, a muchos usuarios les gustaría una versión simplificada del diseñador de informes, solo con las funciones más necesarias. Un diseñador de informes así, personalizado, se puede ofrecer a usuarios finales, insertándolo en su aplicación.
En este artículo vamos a ver cómo crear un elemento de control personalizado en el diseñador de informes, es decir, una barra de herramientas personalizada con un conjunto de botones funcionales necesarios. Y es bastante fácil. Es que el componente del diseñador de informes nos ofrece un tipo d API para invocar algunos de sus funciones como, por ejemplo: crear, cargar y guardar informe, imprimir, ver informe, etc.
Por lo tanto, todo lo que necesitamos es añadir el componente del diseñador de informes y crear nuestra propia barra de herramientas.
Añadamos al formulario el componente ToolStrip. Creemos en la barra 7 botones:
- New: crear nuevo informe;
- Open: abrir modelo de informe existente para editarlo;
- Save: guardar modelo de informe;
- Preview: vista previa del informe;
- Undo: cancelar últimos cambios;
- Redo: recuperar cambios cancelados;
- Close: cerrar programa.
Conectamos la biblioteca FastReport.dll al proyecto. Y para el formulario creamos un manejador de eventos Load:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
public DesignerControl designer; //Set the variable for the report designer component private void Form1_Load(object sender, EventArgs e) { designer = new DesignerControl(); //Crete a copy of rport designer this.Controls.Add(designer); //Add component to the form Report report = new Report(); //Create a report object designer.Report = report; //Pass the created empty report to the designer designer.RefreshLayout(); //Update the designer designer.Dock = DockStyle.Fill; //Set th location of the dsigner component designer.ShowMainMenu = false; //Turn off menu in the designer } // Create a new report private void ToolStripButton1_Click(object sender, EventArgs e) { designer.cmdNew.Invoke(); } //Open a rport private void OpenBtn_Click(object sender, EventArgs e) { designer.cmdOpen.Invoke(); } //Save report private void SaveBtn_Click(object sender, EventArgs e) { designer.cmdSave.Invoke(); } //View report private void PreviewBtn_Click(object sender, EventArgs e) { designer.cmdPreview.Invoke(); } //Close program private void CloseBtn_Click(object sender, EventArgs e) { this.Dispose(); } //Undo the last action private void UndoBtn_Click(object sender, EventArgs e) { designer.cmdUndo.Invoke(); } //Redo the last action private void RedoBtn_Click(object sender, EventArgs e) { designer.cmdRedo.Invoke(); } |
Como ha podido notar, para cada botón de la barra de herramientas creada hemos creado un evento de botón. Según la designación del botón, llamamos la orden necesaria del diseñador.
Lista de las órdenes disponibles:
- cmdNew: crear nuevo informe;
- cmdNewPage: crear nueva página de informe;
- cmdNewDialog: crear formulario de diálogo del informe;
- cmdOpen: abrir informe existente para editarlo;
- cmdSave: guardar modelo de informe;
- cmdSaveAs: guardar modelo de informe con la ruta indicada;
- cmdSaveAll: guardar todos los cambios;
- cmdClose: cerrar informe en el diseñador;
- cmdCloseAll: cerrar todos los informes en el diseñador;
- cmdPreview: ver informe;
- cmdPrinterSetup: ajustes de la imprisión;
- cmdPageSetup: ajustes de la página de informe (orientación, tamaño, etc.);
- cmdAddData: añadir fuente de datos;
- cmdSortDataSources: ordenar fuentes de datos;
- cmdChooseData: seleccionar fuente de datos;
- cmdUndo: cancelar los últimos cambios del informe;
- cmdRedo: recuperar los últimos cambios del informe;
- cmdCut: cortar en el portapapeles;
- cmdCopy: copiar en el cortapapeles;
- cmdPaste insertar desde el portapapeles;
- cmdFormatPainter: establecer el formato del pintador;
- cmdDelete: eliminar objeto de informe;
- cmdCopyPage: copiar página de informe;
- cmdDeletePage: eliminar página de informe;
- cmdSelectAll: seleccionar todos los objetos de la página;
- cmdGroup: agrupar objetos;
- cmdUngroup: disgregar objetos de informe;
- cmdEdit: editar los ajustes de la página de informe;
- cmdFind: mostrar ventana de búsqueda;
- cmdReplace: mostrar ventana de cambio;
- cmdBringToFront: objeto del diseñador en el primer plano;
- cmdSendToBack: objeto del diseñador en el último plano;
- cmdInsert: comprueba si está activada la opción de insertar;
- cmdInsertBand: insertar banda;
- cmdRecentFiles: añadir archivo a la lista de archivos recientes;
- cmdSelectLanguage: eligir idioma del diseñador;
- cmdViewStartPage: activar página de arranque al abrir el diseñador;
- cmdReportSettings: establecer los ajustes del informe;
- cmdOptions: establecer los ajustes del diseñador;
- cmdReportStyles: establecer el estilo del diseñador;
- cmdHelpContents: mostrar la página web de ayuda;
- cmdAbout: mostrar la página "About";
- cmdWelcome: mostrar la página de bienvenida;
- cmdPolySelectMove, cmdPolySelectPointer, cmdPolySelectAddPoint, cmdPolySelectBezier, cmdPolySelectRemovePoint: ajustes del polígono.
Ahora arrancamos nuestra aplicación:
Se ve como un diseñador de informes ordinario. Pero mire la barra de herramientas de arriba: no es la de siempre. Ahora solo tenemos las funciones que necesitamos.
.