Afdrukken met Visual Basic 2008 André Obelink www.maryor.nl | www.obelink.com
Over mezelf… MarYor | software & consultancy Auteur van artikelen en boeken Geschreven voor Microsoft .NET Magazine, PC Active, MSDN Magazine Europe, SDN Magazine, VB Magazine Boek: Visual Basic 2005 – de Basis (9/2006) Boek: Visual Basic Kookboek (3/2008) Boek: Visual Basic 2008 – de Basis (8/2008) Boek: C# Kookboek (co-auteur, verwacht maart 2009) Actief binnen de ontwikkelaarsgemeenschap Sinds 2006 Microsoft MVP voor Visual Basic
Agenda Vrij afdrukken Printers en printerinstellingen PrintDocument, PrintPreviewDialog, PageSetupDialog Printers en printerinstellingen PrinterSettings, standaard printer Afdrukken van lijsten (database) Microsoft.Reporting, LocalReport, ReportViewer, .. Visual Basic 6 Printer, PrintForm
PrintDocument PrintDocument class. Belangrijke methoden, properties en events zijn: Methoden - Print() Eigenschappen - DefaultPageSettings, DocumentName, PrinterSettings Events - BeginPrint(), EndPrint(), PrintPage(), QueryPageSettings()
Events PrintDocument Volgorde Event Omschrijving 1 BeginPrint() Gebruik dit event om eventuele datastructuren op te bouwen of verbindingen naar een database te leggen. 2 QueryPageSettings() Gebruik dit event om eventuele pagina-instellingen te wijzigen. Denk hierbij aan marges of bijvoorbeeld de afdrukstand. 3 PrintPage() Gebruik dit event om de feitelijke afdrukcode in te plaatsen. Wanneer dit event geen code bevat, zal er ook niets worden afgedrukt. 4 EndPrint() Gebruik dit event om gebruikte variabelen op te ruimen en eventuele verbindingen naar database(s) netjes af te sluiten.
PrintPage() event Private WithEvents _PrintDocument As New PrintDocument Private Sub _PrintDocument_PrintPage(ByVal sender As Object, _ ByVal e As PrintPageEventArgs) _ Handles _PrintDocument.PrintPage Dim lettertype As New Font("Arial", 24) e.Graphics.DrawString("Hallo!", lettertype, Brushes.Black, 100, 100) End Sub Private Sub PrintButton_Click() Handles PrintButton.Click _PrintDocument.Print()
PrintDocument en PrintPreviewDialog Demo PrintDocument en PrintPreviewDialog
Afdrukken over meerdere pagina’s Vang het PrintPage() event af Bereken hoe groot het printbare gebied is hou rekening met afdrukstand, marges… Bereken hoeveel karakters er in passen gebruik hiervoor de methode e.Graphics.MeasureString() Print het bewuste aantal karakters Indien nog niet alle karakters geprint zijn… stel de eigenschap e.HasMorePages in op True PrintPage() Doorloop alle stappen tot alle tekst afgedrukt is
Afdrukken meerdere pagina’s Demo Afdrukken meerdere pagina’s
Pagina-instellingen Gebruik PageSetupDialog Stel eigenschap PageSetupDialog.PageSettings in op de huidige pagina-instellingen van het PrintDocument Toon het dialoogkader Stel eigenschap PrintDocument.DefaultPageSettings in op PageSetupDialog.PageSettings
Demo PageSetupDialog
Printerinstellingen Gebruik PrintDialog Stel eigenschap PrintDialog.Document in op het PrintDocument dat geprint moet worden Toon het dialoogkader Indien de gebruiker op OK heeft geklikt, roep de PrintDocument.Print() methode aan
Demo PrintDialog
VB6 – Printer.Print() Voor backwards compatibiliteit met VB6 is er een alternatief – Printer object Microsoft Visual Basic PowerPacks Gebruik weer methoden en eigenschappen als: Print() CurrentX en CurrentY Circle() EndDoc()
Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6.Printer Code Microsoft.VisualBasic.PowerPacks.Printing.Compatibility.VB6.Printer
PrintForm Een andere oude bekende uit het VB6 tijdperk: de PrintForm class Microsoft Visual Basic PowerPacks Handig voor een 1:1 dump van een formulier Stel eigenschappen in zoals: DocumentName Form PrintAction Roep methode Print() aan
Demo PrintForm
Report Namespace Microsoft.Reporting Microsoft.Reporting.WinForms Microsoft.Reporting.WebForms LocalReport (.rdlc) en ServerReport Met name gericht op database reporting
Demo Microsoft.Reporting
Alternatieven Afdrukken met standaard Visual Basic is sterk verbeterd, maar voor veel projecten minder geschikt… Business Objects Crystal Reports DataDynamics ActiveReports DevExpress XtraReports Telerik Reporting
DataDynamics ActiveReports 3.0 Professional (Indien nog wat tijd over…) Demo DataDynamics ActiveReports 3.0 Professional
Bedankt voor uw aandacht! Vragen? Bedankt voor uw aandacht! andre@obelink.com