Seite 1 von 1

HbPrinterX - Version 1.32 / 1.33 - OEM / ANSI freigegeben

Verfasst: So, 13. Sep 2009 15:55
von brandelh
Hallo,

die neue Version meiner Druckerklasse ist nun in 2 Versionen erhältlich, ANSI / OEM ;-)
-> http://www.familie-brandel.de

Neben einigen Fehlerverbesserungen gibt es 3 wichtige Neuerungen:
  • oP:say(nZeile,nSpalte,cTxt ...) erleichtert die Migration -> linke obere Ecke ist 1,1 :!: ;-)
  • XbpPrinterDialog() kann jetzt genutzt werden um einen Drucker auszusuchen und mit diesem dann HBPrinter zu starten.
  • Die Texte des HBPrinterDialog() wurden in #defines vorangestellt und auch ins englische übersetzt.
    Das erleichtert Textanpassungen.
Beispiele:

Code: Alles auswählen

oHBPrinter := HBPrinter():New():create()
if ! oHBPrinter:IsPrinterError()             // Fehler verhindern, avoid errors
   oHBPrinter:addFont("12.Courier New" ) // -> 10CPI
   oHBPrinter:SetFont(1)
   oHBPrinter:StartDoc("SAY Print")
   for nRow := 5 to 60
        oHBPrinter:say(nRow,10,aZeile[nRow])
   next
   oHBPrinter:say(3,60,"Seite: "+str(nSeite,3))
   oHBPrinter:EndDoc()
endif
? "END"

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Appevent.ch"
#include "Font.ch"

#pragma Library( "XppUI2.lib" )

PROCEDURE Main
   LOCAL oXbpPrinter, oDlg, oHBPrinter

   oDlg := XbpPrintDialog():new()
   oDlg:enablePrintToFile := .f.
   oDlg:printToFile       := .f.
   oDlg:create()
   oXbpPrinter := oDlg:display()
   oDlg:destroy()

   if oXbpPrinter # NIL

      oHBPrinter := HBPrinter():New(oXbpPrinter):create()

      if oHBPrinter:IsPrinterError()             // Fehler verhindern, avoid errors

         ? "Standarddrucker ist nicht verfgbar !"
         ? "Standardprinter is not ready !"
         ?
         ? "Status: ",oHBPrinter:printerStatus(),"=",cPrinterStatus(oHBPrinter:printerStatus())

      else

         oHBPrinter:addFont("12.Arial")
         oHBPrinter:setFont(1)

         oHBPrinter:StartDoc()
         oHBPrinter:say(15,30,"Hello World")
         oHBPrinter:say(20,10,"Drucker: ")
         oHBPrinter:say(20,20,oHBPrinter:DevName)
         oHBPrinter:say( 5,70,dtoc(date()))
         oHBPrinter:EndDoc()

      endif

      oXbpPrinter:destroy()
      oHBPrinter:destroy()

   endif

return

Re: HbPrinterX - Version 1.32 - OEM / ANSI freigegeben

Verfasst: Mo, 21. Sep 2009 16:20
von Dieter
Hallo Hubert,

ich habe mir deine neue Say()-Funktion angeschaut. Sieht alles sehr vielversprechend aus. Ich verstehe nur nicht, warum folgender Code unterschiedliche Druckergebnisse erzeugt:

Code: Alles auswählen

oHBPrinter:say(nRow,1,"         1         2         3         4         5         6         7         8         9",,nCPI)
for nCol := 1 to 9
   oHBPrinter:say(nRow,nCol*10,nCol,,nCPI)
next
Das würde ja bedeuten, dass mit Blank-Zeichen formatierte Überschriften nicht die gleichen Abstände erzeugen (analog zum Clipper-Druck). Bei 10-CPI-Zeichen sollte ein Blank doch auch 1/10 Zoll lang sein.
Trotzdem bin ich dir sehr dankbar, dass du deine Klasse mit Quellcode zur verfügung stellst. :D :D

Re: HbPrinterX - Version 1.32 - OEM / ANSI freigegeben

Verfasst: Mo, 21. Sep 2009 18:03
von brandelh
Hallo Dieter,

im Prinzip hast du natürlich Recht und wenn du bei Courier New 12 auf den Acrobat PDF druckst und danach den Acrobat ausdruckst, wirst du (habe zumindest ich) keinen Unterschied festgestellt.
Leider sind die Schriftgrößen die wir bei anderen Druckern bekommen nicht immer gleich, Windowsschriften sind sowieso nur "in etwa" mit den alten CPI gleichzusetzen.

Einmal davon abgesehen, dass ich es eh nicht ändern kann (welche Schrift ausgewählt wird, ist sehr speziell ;-)), ist es fast auch ein Vorteil:

1. Wenn man den ganzen Text in einem String vom linken Rand in Courier New formartiert druckt, dann macht es nix, dass die tatsächlichen Abstände auf 20 cm etwas abweichen.
2. Wenn man das nicht will, kann man ja jedes Zeichen einzeln ansteuern, soviel Arbeit macht das auch nicht ;-)
3. DER Vorteil ist aber, dass man jede Windowsschriftart nehmen kann (variable Breite) und einfach den Anfang oder Endpunkt (je nach Ausrichtung) angibt, den Rest der Schrift dann so akzeptiert, wie er ausfällt.
Das ist dann programmiert wie zu alten Zeiten, sieht aber aus wie mit dem Satzprogramm :-)

Re: HbPrinterX - Version 1.32 - OEM / ANSI freigegeben

Verfasst: Mi, 23. Sep 2009 23:09
von brandelh
Hi,

ein kleiner Fehler mit großer Wirkung zwingt mich zur nächsten Version ... 1.33 wurde freigegeben ;-)

Re: HbPrinterX - Version 1.32 / 1.33 - OEM / ANSI freigegeben

Verfasst: Mi, 23. Sep 2009 23:22
von brandelh
Hi,

sollte sich der eine oder andere Denken, "das schaff ich nie ..." kann ich anbieten die alten Druckausgaben
oder (gescannte) Papiervorlagen im Quellcode umzusetzen. Bei Bedarf einfach eine PN oder eMail senden,
wir werden uns da sicher einig ;-)

Re: HbPrinterX - Version 1.32 / 1.33 - OEM / ANSI freigegeben

Verfasst: Mi, 11. Nov 2009 17:24
von brandelh
Hi,

weil ich sie gerade zur Hand habe stelle ich mal 2 PDF Testausdrucke hier rein.
Erstellt wurden diese mit TEST.EXE (leicht erweitert), das der Druckerklasse beiliegt.
Auf diesen Seiten kann man grob sehen, was man alles so drucken kann: