PrintForm - Problem..

VBMichi

Mitglied
Servus.

Habe seit langem folgendes Problem:

Ich will das meine Form (mit Labels usw. bestückt - sieht aus wie ein fertiges Dokument) ausgedruckt wird.
Alles kein Problem mit dem PrintForm Befehl. Nur leider verkleinert VB alles sofort und automatisch, da die Form nicht die Größe eines DinA4 Blattes annehmen kann - also kann sie auch kein ganzes DinA4 Blatt füllen, sondern nur ca. 3/4 davon.

Weiß jemand wie ich weiterkommen könnte?

Vielen Dank,

Gruß Michi
 
Hallo, versuch´s mal hiermit:
Code:
Private Declare Sub keybd_event Lib "user32" ( _
  ByVal bVk As Byte, _
  ByVal bScan As Byte, _
  ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long)
  
Private Enum Ausrichtung
 Hochformat = 1
 Querformat = 2
End Enum

Private Sub FormToPrinter(Optional ByVal bActiveWindow As Boolean = True, Optional Orientation As Ausrichtung = Hochformat)

  Const KEYEVENTF_KEYUP = &H2
  Const VK_MENU = &H12
  Const VK_SNAPSHOT = &H2C

  If bActiveWindow Then keybd_event VK_MENU, 0, 0, 0
  keybd_event VK_SNAPSHOT, 0, 0, 0
  keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
  If bActiveWindow Then keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
  DoEvents
  
  Printer.Orientation = Orientation
  Printer.PaintPicture Clipboard.GetData, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight
  Printer.EndDoc
End Sub

Private Sub Command1_Click()
 FormToPrinter True, Querformat
End Sub
 
Hi wincnc.

Vielen Dank für deine Antwort, das hat mich schonma einen rieeeeßen Schritt weitergebracht, weils funktioniert!! ;)

Aber noch ne Frage:

Wenn ich die Form JETZT ausdrucke, dann druckt er sie zwar super DinA4 aus, aber leider ist der "Rand" dabei - sprich oben die MenüLeiste mit minimieren, vergrößern und dem Schließezeiche + der Name der Form und so.
Gäbe es ne Möglichkeit das zu unterdrücken oder einfach "wegzuschneiden" ?!
Weil eine Abrechnung mit Schaltflächen außenrum is nicht so praktisch !! *G*

Aber super hey, dank dir!

Gruß,
Michi
 
Zuletzt bearbeitet:
Hallo, ja das geht.
Code:
Printer.PaintPicture Clipboard.GetData, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, 60, 450, Me.Width - 120, Me.Height - 550
Bei den Werten musst ein wenig probieren.
 
So, jetzt muss ich leider nochmal was nachfragen ;)

Alles was du mit gesagt hat funktioniert perfekt. Es gibt nur (einen für mich neuen) bedeutenden Unterschied.
Auf der Form die dann (wenn man auf den sich dort befindeten Button klickt) ausgedruckt wird, wir der "Druck-Button" auf .Visible = False gesetzt bevor ich FormToPrinter True mache.
Er verschwindet dann auf der Form und der Drucken geht an.
Aber irgendwie druckt er die Buttons obwohl sie Invisible sind (mit Label's das gleich) trotzdem aus. Warum?
Gibt es ein Befehl um die Buttons zu löschen oder einfach auch für den Drucker unsichtbar zu machen

Gruß,
Michi
 
ich glaub das is ne Funktion, die einfach DoEvents() heißt:rolleyes:

Probier halt mal aus... kannst natürlich für eine genauere Beschreibung auch in MSDN nach DoEvents suchen...;)
 
Hab jetzt hier gesucht und gegoogled, aber verstande noch immer nix :-)

Irgend nen Bsp für son DoEvent wäre nicht schlecht, damit ich mir was drunter vorstellen kann.
Gruß,
Michi
 
Zurück