Upload
milica
View
38
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
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
• Vrij afdrukken– PrintDocument, PrintPreviewDialog, PageSetupDialog
• Printers en printerinstellingen– PrinterSettings, standaard printer
• Afdrukken van lijsten (database)– Microsoft.Reporting, LocalReport, ReportViewer, ..
• Visual Basic 6– Printer, PrintForm
Agenda
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()
End Sub
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
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()
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
Demo
DataDynamics ActiveReports 3.0 Professional
(Indien nog wat tijd over…)