Hi,
zunächst solltest du hier prüfen ob der XbpPrinterDialog() eventuell NIL zurückgegeben hat.
Das wird zwar keinen Fehler geben, da HbPrinter dann den Standarddrucker nutzt, aber der Anwender wollte eigentlich den Druck abbrechen:
Code: Alles auswählen
oXbpPrinter := oDlg:display()
oDlg:destroy()
if ! empty(oXbpPrinter) // oder # NIL etc.
oHBPrinter := HBPrinter():New(oXbpPrinter):create()
mit dieser Anweisung legst du die Schriftart und Standard-Punktgröße fest (hier 14, bold, normal also nicht kursiv):
wenn du etwas anderes als den Standard willst, musst du ein Fontobjekt mit XbpFont() erstellen, dort kannst du dann die Höhe und Breite frei festlegen, ob es genauso erstellt wird, ist nicht garantiert.
Dieses so erzeugte Font Objekt kannst du dann auch :addFont() übergeben.
Code: Alles auswählen
so sieht die Methode aus ...
*-------------------------------------------------------------
METHOD _HBPrinter:AddFont(uFont)
local oFont := NIL
do case
case valtype(uFont) = "C"
oFont := XbpFont():new(::oPS):create(uFont)
case valtype(uFont) = "O"
oFont := uFont
case valtype(uFont) = "A"
do while len(uFont) < 4
aadd(uFont, NIL )
enddo
oFont := FontWahl( uFont[1], uFont[2], uFont[3],uFont[4], ::oPS )
// FontWahl( cFontName, nFontHoehe, lBold, lItalic)
end case
aadd(::aFontList,oFont)
return self
... so kannst du einen eigenen Font anpassen und verwenden
oFont := XbpFont():new(oHBPrinter:oPS) // Font-Objekt für diesen Drucker erstellen
oFont:familyName := "Courier New"
oFont:bold := .t.
oFont:fixed := .t. // sicher ist sicher, eventuell unnötig bei Courier New
oFont:height := 60 // 6mm bei meiner HBPrinter Vorgabe GRA_PU_LOMETRIC
// wenn du nicht die Standardbreite willst, kannst du dies so vorgeben, die Schrift könnte aber "gestaucht" wirken !
oFont:width := 40 // 4mm bei meiner HBPrinter Vorgabe GRA_PU_LOMETRIC
// so wird die Standardbreite zur obigen Höhe verwendet, was meist schöner aussieht.
oFont:width := 0
oFont:create()
oHBPrinter:addFont(oFont)
wie gesagt, damit muss man experimentieren um zu sehen wie es aussieht.
Das gute daran ist, dass ein Standardfont wie Courier New oder Arial oder Times auf allen Windowsrechnern gleich aussieht (oder zumindest aussehen sollte

)