vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 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

Fortgeschrittene Programmierung
Re: Tip: phys. Druckränder ermitteln -> Ich kriegs nicht in den Schädel! 
Autor: ModeratorDieter (Moderator)
Datum: 21.09.02 12:21

Hi BKC,

zu 1)
Über die Funktion GetDeviceCaps kannst Du alles mögliche ermitteln - also nicht nur die physikalischen Druckerränder. Damit die Funktion aber weiß, was Du ermitteln möchtest, also z.B. den linken nicht bedruckbaren Rand des Druckers, muss Du ihr das über den Parameter nIndex mitteilen. Um z.B. den linken nicht bedruckbaren Rand zu ermitteln, muss nIndex = 110 sein. Demnach kannst Du die Funktion wie folgt aufrufen:
pLeftPixels = GetDeviceCaps(Printer.HDC, 110)
Damit der Code aber später leserlicher wird, definiert man den Wert 110 einfach als aussagekräftige Konstante, also z.B.:
Const PHYSICALOFFSETX = 110
Somit übergibst Du dann der Funktion nicht mehr 110, sondern eben die Konstante - was jedoch gleichbedeutend mit der direkten Wertübergabe von 110 ist.

4.) Wenn Du CurrentX und CurrentY auf die Werte 0 festlegst, erfolgt die Ausgabe ganz oben links - jedoch unter Berücksichtigung der nicht bedruckbaren Ränder. Hat der Drucker z.B. einen Offset von x = 6mm und y = 5mm, so erfolgt die Ausgabe an der Position x=6mm und y=5mm.

Um nun sicherzustellen, dass die Ausgabe auf JEDEM Drucker an exakt der gleichen Position erfolgt, musst Du einen konstanten Wert für die nicht bedruckbaren Ränder annehmen. Welche Werte Du hier verwenden solltest, kann ich Dir leider nicht sagen, da jeder Drucker eben einen anderen physikalischen Rand besitzt. Du solltest die Werte also groß genug wählen, z.B. x = 15mm und y = 15mm.

Um nun eine Textausgabe an der Position x=15mm und y=15mm vorzunehmen musst Du als CurrentX und CurrentY auf 15 festlegen, wobei Du dann aber unbedingt noch den physikalischen Druckrand abziehen musst.
<font color=green>' Ausgabe an Position x=15 mm und y=15 mm</font>
Dim pLeft As Integer
Dim pTop As Integer
 
<font color=green>' Maßeinheit mm</font>
With Printer
  .ScaleMode = 6
 
  <font color=green>' Drucker-Offset </font>
  pLeft = .ScaleX(GetDeviceCaps(.hDC, PHYSICALOFFSETX), vbPixels, .ScaleMode)
  pTop = .ScaleY(GetDeviceCaps(.hDC, PHYSICALOFFSETY), vbPixels, .ScaleMode)
 
  <font color=green>' Druckkopf positionieren</font>
  .CurrentX = 15 - pLeft
  .CurrentY = 15 - pTop
 
  <font color=green>' Textausgabe</font>
  Printer.Print "Test"
 
  <font color=green>' Druckauftrag beenden</font>
  .EndDoc
End With
Cu
Dieter
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Tip: phys. Druckränder ermitteln -> Ich kriegs nicht in d...71BKC21.09.02 09:44
Re: Tip: phys. Druckränder ermitteln -> Ich kriegs nicht ...436ModeratorDieter21.09.02 10:32
Re: Tip: phys. Druckränder ermitteln -> Ich kriegs nicht ...42BKC21.09.02 10:51
Re: Tip: phys. Druckränder ermitteln -> Ich kriegs nicht ...379ModeratorDieter21.09.02 11:01
Re: Tip: phys. Druckränder ermitteln -> Ich kriegs nicht ...41BKC21.09.02 11:56
Re: Tip: phys. Druckränder ermitteln -> Ich kriegs nicht ...470ModeratorDieter21.09.02 12:21
Re: Tip: phys. Druckränder ermitteln -> Ich kriegs nicht ...35BKC21.09.02 12:37

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