Mit dem VB-eigenen Printer-Objekt lässt sich allerhand ausdrucken Aber leider immer direkt auf den Drucker. Oftmals wünscht man sich aber einen Ausdruck in eine Echtseitenvorschau, so daß man das Ergebnis zuvor am Bildschirm betrachten kann, ehe man das ganze dann auf den Drucker ausgibt. Wie man eine Seitenvorschau realisiert, zeigen wir Ihnen hier - in unserem Extra-Tipp. Anforderungen Einzig die Anweisung EndDoc, welche den Druckauftrag abschließt, darf nur ausgeführt werden, wenn der Ausdruck tatsächlich auf den Drucker erfolgt. Einschänrkung Das Layout Fügen Sie nachfolgenden Code in den Codeteil der Form (frmPreview): Option Explicit ' Deklaratione der benötigten API-Funktion Private Declare Function StretchBlt Lib "gdi32" ( _ ByVal hdc As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal nWidth As Long, _ ByVal nHeight As Long, _ ByVal hSrcDC As Long, _ ByVal xSrc As Long, _ ByVal ySrc As Long, _ ByVal nSrcWidth As Long, _ ByVal nSrcHeight As Long, _ ByVal dwRop As Long) As Long Private Sub Form_Load() ' Vorschau vorbereiten Picture1.AutoRedraw = True With Picture2 .AutoRedraw = True .Width = Printer.Width .Height = Printer.Height ' aus den sichtbaren Bereich schieben .Move -Width, 0 End With End Sub Public Sub ShowPreview() ' Vorschau neu anzeigen With Picture1 StretchBlt .hdc, 0, 0, .ScaleWidth, .ScaleHeight, _ Picture2.hdc, 0, 0, _ Picture2.ScaleWidth, _ Picture2.ScaleHeight, vbSrcCopy End With End Sub Die Prozedur "PrintPreview" Private Sub PrintPreview(oAusgabe As Object) ' Ausdruck (entweder in Seitenvorschaufenster ' oder auf den Drucker) Dim y As Long Dim prnObject As Object Dim bPreview As Boolean ' Druckvorschau? bPreview = (TypeOf oAusgabe Is Form) If bPreview Then Set prnObject = oAusgabe.Picture2 Else Set prnObject = Printer End If With prnObject ' ein wenig Text drucken .Font.Name = "Arial" .Font.Size = 16 .Font.Bold = True prnObject.Print "vb@rchiv" .Font.Size = 14 prnObject.Print "Das grpße Visual Basic Archiv" .Font.Size = 10 .Font.Underline = True .ForeColor = vbBlue prnObject.Print "http://www.vbarchiv.de" .Font.Underline = False .ForeColor = vbBlack .Font.Bold = False ' eine Linie y = .CurrentY + 60 prnObject.Line (0, y)-(.Width, y) .CurrentY = y + 210 .CurrentX = 0 ' wieder ein bisschen Text .Font.Bold = True .Font.Size = 14 prnObject.Print "Drucken mit Seitenvorschau" prnObject.Print .Font.Bold = False .Font.Size = 11 prnObject.Print "Mit dem VB-eigenen Printer-Objekt lässt sich allerhand ausdrucken ;-)" prnObject.Print "Aber leider immer direkt auf den Drucker. Oftmals wünscht man sich " prnObject.Print "aber einen Ausdruck in eine Echtseitenvorschau, so daß man das " prnObject.Print "Ergebnis zuvor am Bildschirm betrachten kann, ehe man das ganze " prnObject.Print "dann auf den Drucker ausgibt." prnObject.Print "" prnObject.Print "Wie man eine Seitenvorschau realisiert, zeigen wir Ihnen hier - in " prnObject.Print "unserem Extra-Tipp." If bPreview Then ' Druckvorschau erstellen ..... oAusgabe.ShowPreview Else ' Druckauftrag beenden prnObject.EndDoc End If End With End Sub Was fehlt noch? Private Sub cmdPrint_Click() ' Drucken in Druckvorschau Load frmPreview PrintPreview frmPreview frmPreview.Show 1 Unload frmPreview End Sub Zoomfunktion und Druckfunktion |