Gewusst wie: Drucken ein Formulars, zu groß für den Bildschirm oder Seite

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 230502 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Die PrintForm -Methode druckt nur den Teil des Formulars, das angezeigt wird. Dieser Artikel beschreibt die ein Formular drucken, die entweder größer als der Bildschirm oder nur teilweise angezeigt.

Weitere Informationen

Wenn müssen Sie ein Formular drucken, die größer als der Bildschirm oder nur teilweise angezeigt, müssen die Steuerelemente im Formular in eine PictureBox platziert. Dies druckt die Bitmap, die in der PictureBox, anstatt eine Bildschirmaufnahme des Formulars selbst enthalten ist (die Funktionsweise von PrintForm ). Da die PictureBox Bitmap in einem Gerätekontext im Arbeitsspeicher gespeichert ist, müssen Sie Zugriff auf die gesamte Bitmap unabhängig davon, was angezeigt wird.

Hinweis: Für die Zwecke dieses Artikels wird die Höhe des Formulars auf 11 Zoll festgelegt. Gegebenenfalls ein anderes Papierformat wie z. B. 8.5 - X 14-Zoll, legen Sie die Variable sTall einen entsprechenden Wert, z. B. 14. Beachten Sie außerdem, dass diese Zuordnungen in Twips vorgenommen werden, da dies die Standardeinstellung Scalemode für Formulare ist. Wenn Sie die Scalemode ändern, müssen Sie diese Werte auch entsprechend ändern.

Drucken Sie ein Formular mit mehr als das Bild

  1. Starten Sie ein neues Standard EXE-Projekt in Visual Basic. Form1 wird standardmäßig erstellt.
  2. Fügen Sie zwei PictureBox zu Form1 hinzu.

    Vermeiden Sie die zweite PictureBox innerhalb der ersten Zeichnung, da dies also der zweiten PictureBox ein Mitglied der ersten macht. Setzen Sie stattdessen den Ausgangspunkt der zweiten PictureBox links von der Ursprungspunkt der ersten PictureBox.
  3. Klicken Sie mit der rechten Maustaste auf Picture2 , und wählen Sie in den Hintergrund .
  4. Fügen Sie zwei Bezeichnungen zu Picture1, Picture2 leer lassen.
  5. Fügen Sie den folgenden Code hinzu Abschnitt Allgemeine Deklarationen von Form1:
    Private Const twipFactor = 1440
    Private Const WM_PAINT = &HF
    Private Const WM_PRINT = &H317
    Private Const PRF_CLIENT = &H4&    ' Draw the window's client area.
    Private Const PRF_CHILDREN = &H10& ' Draw all visible child windows.
    Private Const PRF_OWNED = &H20&    ' Draw all owned windows.
    
    Private Declare Function SendMessage Lib "user32" Alias _
       "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
       ByVal wParam As Long, ByVal lParam As Long) As Long
       
    Private Sub Form_Load()
       Dim sWide As Single, sTall As Single
       Dim rv As Long
    
       Me.ScaleMode = vbTwips   ' default
       sWide = 8.5
       stall = 11   ' or 14, etc.
       Me.Width = twipFactor * sWide
       Me.Height = twipFactor * stall
       With Picture1
          .Top = 0
          .Left = 0
          .Width = twipFactor * sWide
          .Height = twipFactor * stall
       End With
       With Picture2
          .Top = 0
          .Left = 0
          .Width = twipFactor * sWide
          .Height = twipFactor * stall
       End With
       With Label1
          .Caption = "Top"
          .Left = Me.Width / 2
          .Top = 0
       End With
       With Label2
          .Caption = "Bottom"
          .Top = (twipFactor * stall) - .Height * 2
          .Left = Me.Width / 2
       End With
       Me.Visible = True
       DoEvents
    
       Picture1.SetFocus
       Picture2.AutoRedraw = True
       rv = SendMessage(Picture1.hwnd, WM_PAINT, Picture2.hDC, 0)
       rv = SendMessage(Picture1.hwnd, WM_PRINT, Picture2.hDC, _
       PRF_CHILDREN + PRF_CLIENT + PRF_OWNED)
       Picture2.Picture = Picture2.Image
       Picture2.AutoRedraw = False
    
       Printer.Print ""
       Printer.PaintPicture Picture2.Picture, 0, 0
       Printer.EndDoc
    End Sub
    					
  6. Führen Sie das Projekt aus.
  7. Der oben und unten sollte Beschriftungen in Ihren jeweiligen Positionen unabhängig davon, ob das Formular vollständig angezeigt wird.

Ein Formular auf mehr als einer Seite drucken

Wenn das Formular, das beim Drucken, auf einer Seite zu groß ist, können Sie die gleiche Weise wie im vorherigen Beispiel mit einer Nebenversion. Die PaintPicture -Methode hat eine Reihe von optionalen Parametern. Die Clipping Region Parameter können verwendet werden, nehmen Sie einen Teil der Bitmap und drucken.

Suchen Sie dazu den folgenden Code im vorherigen Beispiel:
Printer.Print ""
Printer.PaintPicture Picture2.Picture, 0, 0
Printer.EndDoc
				
ersetzen diese drei Zeilen Code mit den folgenden:
Printer.Print ""
Printer.PaintPicture Picture2.Picture, 0, 0, , , _
   0, 0, , Picture2.Height / 2
Printer.NewPage
Printer.PaintPicture Picture2.Picture, 0, 0, , , _
   0, Picture2.Height / 2, , Picture2.Height / 2
Printer.EndDoc
				
für Abbildung zu erleichtern, unterteilt in diesem Beispiel wird lediglich das Formular in der Hälfte. Sie können den Ausschneidebereich entsprechend Ihren Anforderungen anpassen.

Hinweis : Visual Basic 6.0 Onlinehilfe besagt, dass PrintForm das gesamte Formular druckt, ob das gesamte Formular sichtbar ist oder nicht. Die Angabe ist fehlerhaft.

Informationsquellen

Weitere Informationen dazu Drucken von Formularen finden Sie folgenden Artikel der Microsoft Knowledge Base:
178076Verwendung von PictureBox zu Steuerelement Ausrichtung Drucken eines Formulars
161299Gewusst wie aufzeichnen und Drucken des Bildschirms, eines Formulars oder jedes Fensters
194580Gewusst wie: Drucken ein Bildes von einem RichTextBox-Steuerelement
146022Einrichten von RichTextBox-Steuerelement für den WYSIWYG-Druck
Visual Basic-Hilfe; Suche nach: "PaintPicture"

Eigenschaften

Artikel-ID: 230502 - Geändert am: Donnerstag, 1. Juli 2004 - Version: 3.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Keywords: 
kbmt kbcodesnippet kbhowto kbprint KB230502 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 230502
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com