En FastReport 2019.4 se agregó la posibilidad de suscribirse a los eventos PreviewControl.OnPrint y PreviewControl.OnExport, que se invocan directamente cuando se presionan los botones correspondientes.
Al visualizar un informe, se invoca a un visor con una barra de herramientas que tiene elementos como un botón de impresión o una lista desplegable con exportaciones de informes. Si selecciona cualquier elemento de la lista, se activará el evento OnExport y, al presionar el botón Imprimir, se activará OnPrint. Vamos a ver un ejemplo de cómo podemos usar estos eventos en práctica.
Puede usar el manejador estándar para estos eventos, que se crea para el componente visual de PreviewControl:
En este caso, simplemente agregue las acciones necesarias al manejador.
Pero si agrega el componente PreviewControl en el código de la aplicación, tendrá que firmar su propio manejador para el evento. Por ejemplo, su administrador puede enviarle una alerta de evento de exportación o impresión. Esto podría ser, por ejemplo, un registro en una base de datos. Consideremos este ejemplo:
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 |
private void Button1_Click(object sender, EventArgs e) { //create report Report report = new Report(); //Load report report.Load("App_Data/Master-Detail.frx"); //create data source DataSet data = new DataSet(); //load data data.ReadXml("C:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\nwind.xml"); //register data report.RegisterData(data); //create preview object var prev = new PreviewControl(); //add preview into the form this.Controls.Add(prev); prev.Dock = DockStyle.Fill; prev.BringToFront(); //subscribe to the event prev.OnExport+= new System.EventHandler<PreviewControl.ExportEventArgs>(ExportAction); //assign preview control to the report report.Preview = prev; //Show the report report.Show(); } |
Después de crear el objeto de informe y registrar datos en él, creamos un PreviewControl, suscribimos al evento OnExport nuestro manejador de eventos, que implementaremos a continuación. Luego asignamos el objeto PreviewControl al informe de vista previa. Y ahora implementamos un manejador de eventos personalizado para el evento OnExport:
1 2 3 4 5 6 7 8 9 |
public void ExportAction(object sender, PreviewControl.ExportEventArgs e) { SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"); SqlCommand command = new SqlCommand("insert into dbo.Status (ReportName, ExportType, ExportDate) Vales ('" + Path.GetFileNameWithoutExtension(e.Report.FileName) + "', '"+ e.Export.BaseName +"', '" + DateTime.Now + "')"); command.Connection = conn; conn.Open(); command.ExecuteNonQuery(); conn.Close(); } |
En este método, registramos información sobre el evento de exportación en una base de datos, con el nombre del informe, el tipo de exportación y la fecha de la transacción. Este es solo un posible ejemplo de cómo utilizar este evento. Puede, por ejemplo, implementar el envío de un correo electrónico de este evento o guardar un archivo de exportación en una carpeta específica.
El evento OnPrint se maneja de la misma manera.
Estos dos eventos son las operaciones más frecuentes en los informes cuando se ven, por eso a muchas personas les gustaría automatizar sus operaciones personalizadas en el evento. Ahora es posible, es fácil tomar información del informe, exportar o imprimir la configuración de los argumentos del evento y utilizarla para crear sus propias operaciones adicionales.