FastReport 2019.4 bietet eine Möglichkeit, die Events PreviewControl.OnPrint und PreviewControl.OnExport zu steuern, die direkt aufgerufen werden, wenn die entsprechenden Schaltflächen gedrückt werden.
Beim Anzeigen eines Reports wird ein Viewer mit einer Symbolleiste aufgerufen, die Elemente wie eine Druckschaltfläche und eine Dropdown-Liste mit Reportsexporten enthält. Wenn Sie ein Element in der Liste auswählen, wird das OnExport-Element ausgelöst, und durch Klicken auf die Schaltfläche Drucken wird OnPrint ausgelöst. Nehmen wir ein Beispiel, wie Sie diese Ereignisse in der Praxis einsetzen können.
Sie können den Standardhandler für diese Ereignisse verwenden, der für die visuelle PreviewControl-Komponente erstellt wurde:
In diesem Fall fügen Sie dem Handler einfach die gewünschten Aktionen hinzu.
Wenn Sie jedoch die PreviewControl-Komponente in Ihren Anwendungscode einfügen, müssen Sie Ihren eigenen Handler fürs Event abonnieren. Ihr Handler kann beispielsweise eine Warnung für ein Export- oder Druckerevent senden. Dies kann beispielsweise das Schreiben in eine Datenbank sein. Betrachten Sie dieses Beispiel:
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(); } |
Nachdem wir ein Reportsobjekt erstellt und Daten darin registriert haben, erstellen wir ein PreviewControl und abonnieren unseren Eventshandler für das OnExport-Event, das wir unten implementieren werden. Als Nächstes weisen wir der Vorschau des Reports das PreviewControl-Objekt zu. Implementieren wir nun einen benutzerdefinierten OnExport-Ereignishandler:
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(); } |
Bei dieser Methode schreiben wir Informationen über das Exporten Event in die Datenbank und geben den Namen des Reports, die Art des Exports und das Datum der Operation an. Dies ist nur eines der möglichen Beispiele für die Verwendung dieses Events. Sie können beispielsweise das Senden eines Briefes für dieses Event implementieren oder die Exportdatei in einem bestimmten Ordner speichern.
Die Arbeit mit dem OnPrint-Event wird auf ähnliche Weise implementiert.
Diese beiden Events sind die am häufigsten angezeigten Vorgänge in Reporten, daher möchten viele ihre benutzerdefinierten Eventsvorgänge automatisieren. Jetzt ist dies möglich. Es ist einfach, Informationen zu den Reports-, Export- oder Druckeinstellungen aus den Ereignisargumenten zu entnehmen und daraus eigene zusätzliche Vorgänge zu erstellen.