Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / System / Drucker / Rand

Physikalische Druckerränder

Impressum
Kontakt
DSVGO
Bei den meisten Druckern für Einzelblattverarbeitung ist es nicht möglich, mit den Anweisungen Printer.CurrentX = 0 und Printer.CurrentY = 0 die aktuelle Druckposition wirklich an den linken, oberen Papierrand zu setzen. Nach einer solchen Positionierung befindet sich die aktuelle Druckposition bei den meisten Druckern einige Millimeter vom linken und oberen Papierrand entfernt.
Wird z.B. ein linker Rand von 20 mm gewünscht, so ergäbe Printer.CurrentX = 20 (bei Einstellung Printer.ScaleMode = vbMillimeters) eine tatsächliche Randbreite von vielleicht 26 Millimeter. Bei der Festlegung der Druckposition durch Printer.CurrentX und Printer.CurrentY sind die für den jeweiligen Drucker geltenden physikalischen Ränder mit zu berücksichtigen. Für einen Drucker HP4P gilt z.B. ein phys. linker Rand mit 6,35 Millimeter.
Um einen tatsächlichen linken Rand von 20 Millimetern zu erreichen, muss die Anweisung also Printer.CurrentX = 20 - 6.35 lauten.
Mit der API-Funktion GetDeviceCaps können bei 32-Bit Systemen (Windows95 / 98 u. Windows NT / 2000) die physikalischen Druckerränder ermittelt werden:
'Im Deklarationsteil:
Private Const PHYSICALOFFSETX As Long = 112
Private Const PHYSICALOFFSETY As Long = 113
Private Declare Function GetDeviceCaps Lib "GDI32" ( _
    ByVal hDC As Long, ByVal nIndex As Long) As Long

'Im Programmteil:
With Printer
  LRand = .ScaleX(GetDeviceCaps(.hDC, PHYSICALOFFSETX), vbPixels)
  ORand = .ScaleY(GetDeviceCaps(.hDC, PHYSICALOFFSETY), vbPixels)
  RRand = .ScaleX(.Width, vbTwips) - .ScaleWidth - LRand
  URand = .ScaleY(.Height, vbTwips) - .ScaleHeight - ORand
End With
Man beachte, dass Printer.ScaleMode die Einheit der Rückgabewerte bestimmt. Sollen z.B. alle Angaben in Millimeter erfolgen, so muss vorher einfach folgende Zeile stehen:
Printer.ScaleMode = vbMillimeters

Ursprünglicher Artikel von Peter Götz (Götz GmbH)

© Jost Schwider, 30.04.2000-05.05.2000 - http://vb-tec.de/drckrand.htm