W FastReport 2019.4 dodano możliwość przepisania zdarzeń PreviewControl.OnPrint i PreviewControl.OnExport, wywoływanie których następuję bezpośrednio po naciśnięciu odpowiednich przycisków.
Przeglądając raport, możesz wywołać przeglądarkę przy pomocy paska narzędzi, który ma takie element jak: przycisk drukowania, rozwijania listy z eksportem raportu. Wybierając dowolną pozycję z listy możesz wywołać zdarzenie OnExport, następnie klikając przycisk drukowania, który wywoła OnPrint. Zróbmy przykład i zobaczmy jak możemy wykorzystać tę zdarzenie w praktyce.
Możesz wybrać standardową procedurę obsługi zdarzenia, która została stworzona dla wizualnego komponentu PreviewControl:
W tym przypadku wystarczy dodać niezbędne działania do procedury.
Ale jeśli dodasz składnik PreviewControl do kodu aplikacji, będziesz musiał wpisać własną procedurę do zdarzenia. Na przykład, Twoja procedura może zgłosić alert o zdarzeniu eksportu lub drukowaniu. Przykładowo, może to być rekord w bazie danych. Przeanalizujmy ten przykład:
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(); } |
Po utworzeniu obiektu raportu i zarejestrowaniu w nim danych, tworzymy PreviewControl, wpisujemy do zdarzenia OnExport lub darzenia procedury, którą zastosujemy niżej. Następnie przypisujemy PreviewControl do podglądu raportu. Teraz dodajemy procedurę zdarzenia do 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(); } |
Tym sposobem, rejestrujemy informację na temat zdarzenia eksportu w bazie danych, z nazwą raportu, typem eksportu i datą. To tylko jeden z wielu możliwych przykładów zastosowania zdarzenia. Możesz też zaimplementować wysłanie maila do zdarzenia lub zachować wyeksportowany plik w określonym folderze.
Zdarzenie OnPrint jest obsługiwane w ten sam sposób.
Te dwa zdarzenia są najczęściej stosowane na raportach podczas przeglądania, tak wiele osób chce zautomatyzować listę operacji w zdarzeniu. Teraz jest to możliwe, łatwe pobieranie informacji o raporcie, eksport lub drukowanie ustawień z argumentu zdarzenia i usuwanie go, aby tworzyć własne dodatkowe operacje.