vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Ich blick nicht mehr durch! HILFEEEE 
Autor: BKC
Datum: 01.09.02 15:27

Hi ihr da draußen!

Für einen Ausdruck auf einem vorgegebenem Formular habe ich den physikalischen Mittelpunkt des Blattes berechnet.
Von diesem Punkt aus setze ich die Druckposition der einzelnen Texte. Es funktioniert. Aber warum?
Ich habe die physikalischen Ränder per GetDeviceCap ausgelesen und verrechnet. Zwischenzeitlich bin ich wegen all den "ScaleHeight und ScaleY und ScaleMode und vbTwips und vbPixel" so durcheinander gekommen, daß ich mir nicht mehr sicher bin, ob die Positionierung auch noch nach der Installation auf anderen Rechnern und Verwendung anderer Drucker noch funktioniert.
.
Könntet ihr euch bitte mal den Code anschauen und mein "Gedankenwirrwarr" entwirren?
.
Wie gesagt es funktioniert. Aber Warum?
.
Der 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


Der Code zum Bestimmen des Mittelpunktes:

Private Sub mnuDrucken_Click()
'zu erledigen

Dim lngPapierMittelpunktX As Long
Dim lngPapierMittelpunktY As Long


'ermitteln des Papiermittelpunktes unter Berücksichtigung der physikalischen
'Druckerränder
lngPapierMittelpunktX = Printer.ScaleWidth / 2 + (Printer.ScaleX(GetDeviceCaps(Printer.hdc, PHYSICALOFFSETX), vbPixels) / 2)
lngPapierMittelpunktY = Printer.ScaleHeight / 2 - (Printer.ScaleY(GetDeviceCaps(Printer.hdc, PHYSICALOFFSETY), vbPixels) / 2)

Exit Sub


With Printer
.ScaleMode = vbMillimeters
Dim n As Integer

For n = 0 To lstVerteiler.ListCount - 1
'Gastname aus Listenfeld drucken
Printer.CurrentX = lngPapierMittelpunktX + 50
Printer.CurrentY = lngPapierMittelpunktY + 57.5
Printer.Print lstVerteiler.List(n)

'Gastgebername Drucken
.CurrentX = lngPapierMittelpunktX + 43
.CurrentY = lngPapierMittelpunktY + 78
'MsgBox Printer.CurrentX & vbCrLf & Printer.CurrentY
Printer.Print txtVorname.Text & " " & txtName.Text
.
.
.
usw.

Wäre Euch sehr dankbar.
Gruß BKC
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Ich blick nicht mehr durch! HILFEEEE91BKC01.09.02 15:27
Nachtrag57BKC01.09.02 15:33

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel