VBScript for Packagers

advertisement
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
– 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 paginainstellingen 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
(Indien nog wat tijd over…)
Demo
DataDynamics ActiveReports 3.0 Professional
Vragen?
Bedankt voor uw aandacht!
 [email protected]
Download