Drucken mit HBPrinter - Was geht wie warum ???

Moderator: Moderatoren

Wer kennt, nutzt oder verabscheut HBPrinterX ?

Ich nutze HBPrinterX ausschließlich
6
14%
Ich nutze HBPrinterX gelegentlich bzw. zusätzlich
10
24%
HBPrinterX habe ich früher mal genutzt
1
2%
geprüft, aber für mich ungeeignet
1
2%
der Schrott gehört verboten
0
Keine Stimmen
In nutze grundsätzlich keine Fremdprodukte
0
Keine Stimmen
Noch nie gehört oder kein Interesse
2
5%
Ich nutze Reportgeneratoren oder ähnliches
11
26%
Ich nehme XbpPrinter() pur
11
26%
 
Insgesamt abgegebene Stimmen: 42

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Eben hatte ich hier einen seltsamen Fehler:

Code: Alles auswählen

         oWeKeyGra1Druck := WeKeyGra1Druck():New():create()
         oWeKeyGra1Druck:addFont("21.Arial") *** hier kracht es
         oWeKeyGra1Druck:addFont("10.Arial")
         oWeKeyGra1Druck:addFont("8.Arial")

Code: Alles auswählen

Xbase++ Version     : Xbase++ (R) Version 1.90.355
Betriebssystem      : Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: O CLASS: XbpFont
          -> VALTYPE: O CLASS: XbpPresSpace
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : Parameter hat falschen Typ
oError:filename     : 
oError:genCode      :          2
oError:operation    : :init
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       1025
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von _HBPRINTER:ADDFONT(1953)
Aufgerufen von DRULST01(57)
Aufgerufen von (B)_LISTENDRUCK:INIT(109)
Aufgerufen von _LISTENDRUCK:LISTENDRUCKEN(145)
Aufgerufen von (B)_LISTENDRUCK:INIT(102)
Aufgerufen von XBPPUSHBUTTON:HANDLEEVENT(991)
Aufgerufen von DOEVENTLOOP(43)
Aufgerufen von MAIN(119)
Einige Minuten zuvor ist das Programm noch einwandfrei gelaufen und hat auch sauber gedruckt.
Ein anderes meldete dann "Standarddrucker kann nicht bestimmt werden", das brachte mich auf die Spur.

Win 7 herunterfahren, neu starten, alles funktioniert wieder prima ... :?

Ich druckte auf "Adope PDF" aber auch das Umstellen auf einen anderen Standarddrucker hatte vor dem Neustart nichts geholfen.
Ich muss versuchen, den häßlichen internen Fehler abzufangen (::oPS ist dann wohl NIL, weil kein Standarddrucker geliefert wurde),
warum aber die Druckerwarteschlangen plötzlich weg waren, das kann ich nicht verstehen. Bis jetzt war es das erste und einzige Mal. :?
Gruß
Hubert
Benutzeravatar
Schorsch
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 45
Registriert: So, 21. Sep 2008 19:21
Wohnort: Sinsheim im Kraichgau

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Schorsch »

Hallo Hubert,
vielen Dank für die Hinweise und das erweiterte Beispiel.
Zu deiner Frage - ich verwende deinen Druck-Auswahldialog nicht das Original von XBase.

Was ist der Vorteil von Instanzvariablen gegenüber "normalen" Variablen ? - in diesem Fall.

Ich wollte folgende 2 Zeilen
::PrintMemoPage( 200, 200 ,cListeMemoText) // ab Zeile 3
oder
::PrintMemo( 200, 200 ,cListeMemoText, "L",,,,,2749) // ab Zeile 3 bis 50

(alternativ) verwenden um eine einfach Textdatei, die ich vorher am Bildschirm anzeige auf den Standarddrucker ausgeben,
bekomme aber dann eine(dieselbe) Fehlermelung:

Die besagte Zeile->1302 sind die oben angegebenen.
-------------------------------------------------------------------------------------------------------------------
FEHLERPROTOKOLL von "D:\GS_PROJ\FaktKBH\FAKTKBH.EXE" Datum: 27.01.2015 00:40:53

Xbase++ Version : Xbase++ (R) Version 1.90.355
Betriebssystem : Windows Vista 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args :
-> NIL
oError:canDefault : N
oError:canRetry : J
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Unbekannte Variable
oError:filename :
oError:genCode : 22
oError:operation : SELF
oError:osCode : 0
oError:severity : 2
oError:subCode : 2000
oError:subSystem : BASE
oError:thread : 1
oError:tries : 1
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von TEMP_DRU(1302)
Aufgerufen von (B)TMPTXTBS(1208)
Aufgerufen von MEMOEDIT(0)
Aufgerufen von TMPTXTBS(1232)
Aufgerufen von KUNDLST1(99)
Aufgerufen von STAMMENU(73)
Aufgerufen von MAIN(589)
-----------------------------------------------------------------------
Ich benutze HBPrinter Version 1.36 vom 29.1.2012

Ich habe eine Umgehungslösung mit zeilenweisem Lesen und ausgeben gemacht, bin aber damit nicht wirklich zufrieden.

Vielleicht könntest du noch erklären, was der Unterschied von ::PrintMemoPage() und ::PrintMemo() ist.

Vielen Dank
Gruß
Schorsch
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

eine LOCALE Variable nimmt man dann, wenn sie NUR in dieser Funktion / Methode benötigt wird, bzw. über Parameter den Inhalt weitergibt.
Eine Instanzvariable ist in der Klasse je nach Art mehr oder weniger sichtbar (siehe hierzu unterschiede zu EXPORTED, PROTECTED etc.)
Würde ich Funktionen verwenden, müsste ich alle Instanzvariablen Variablen entweder für alle sichtbar machen (Public Private) und hätte somit immer das Problem dass andere Programme diesen Namen schon haben, oder aber per Parameter übegeben, das wären sehr viele Parameter !

Hierzu bitte die Grundlagen zu Klassen und Objekten in der Hilfe von Xbase++ lesen ...

Deine Fehlermeldung besagt, dass die :: in einer Funktion und nicht in einer Methode verwendet wurden, SELF == :: ist aber nur innerhalb eines Objektes / Klasse sichtbar.
In Funktionen muss man das Objekt z.B. in einer Local speichern: oHBP := HBPrinter()... oHBP:PrintMemo() ...

Zu PrintMemo und PrintMemoPage ... der Unterschied liegt darin, dass eine davon immer allen Text druckt und notfalls einen Seitenumbruch auslöst !!!
wärend die andere den Text der nicht in den Bereich passt zurückgibt, damit man diesen auf der nächsten Seite selbst drucken kann.
In meinen Beispielen wird das klarer, denn die nutze ich auch um die Methoden zu testen ;-)
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

hast Du schon bemerkt, dass unter Xbase++ 2.0 die Methode printbmp() ein Bitmap mit transparentem Hintergrund mit schwarzem Hintergrund druckt?
Die Druckvorschau ist korrekt, der Ausdruck (oder auch ein PDF-Druck) aber dann mit schwarzem Hintergrund. Unter 1.9 ist beides transparent.

Eigentlich entspricht das jetzt ja der Beschreibung lt. Hilfe:
transparent color specified in the :transparentClr instance variable is ignored if the presentation space passed in <oTargetPS> is connected to a printer or file device context.
Auf die Schnelle fällt mir dazu keine Lösung ein... Dir?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Ehrlich gesagt, habe ich nie ein BMP mit transparentem Hintergrund gehabt !
Ich ging davon aus, dass BMPs sowas nicht können und habe alle Farben definiert die ich brauche.
Schrift muss man dann aber darüber legen, diese sollte transparent gedruckt werden.

PS: ich nutze ja nur das was Xbase++ anbietet ;-)
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

BMP unterstützt auch keinen transparenten Hintergrund, nur png und gif. In meinem Fall geht es um png.
Hast Du bisher also immer nur ein 4eckiges Bild gedruckt, bzw. dann immer mit weißem Hintergrund?

Der Ansatz funktioniert aber auch nicht, wenn man die Transparenz mit Weiß (bei weißem Papier) ersetzt und dann erst druckt, weil sich V2.0 jetzt offensichtlich anders verhält?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Tatsache ist, dass ich mich überhaupt nicht mit Transparenz beschäftigt habe, da brauche ich wohl etwas Nachhilfe ;-)

Aber wie gesagt, ich nutze Xbase++ Standardcontrols.
Wie kann ich das testen ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Hier ist die Methode, die Grafiken druckt:

Code: Alles auswählen

*-------------------------------------------------------------------
METHOD _HBPrinter:PrintBmp(nX,nY,nXSize,nYSize,cFileName,nID)
   local oBitmap,lSuccess:=.t.,aPos1:={}, lIsLoaded := .f.
   // infos zum Drehen ???
   /*
      Drehen mit linke obere und rechte untere Ecke vertauscht ????
   */
   // nx=xKoordinate, ny=yKoordinate, cFileName
   // nXSize=Breite in X, nYSize=Höhe in Y
   aPos1 := ::PosHBtoXPP(nX,nY)
   oBitmap := XbpBitmap():new():create( ::oPS )

   if IsNil(nID)    // Dateiname der Bitmap wurde übergeben
      lIsLoaded := oBitmap:loadFile( cFileName )
   else             // Resource wurde angegeben, benutzen  HB
      lIsLoaded := oBitmap:load( cFileName , nID )   // hier kann cFileName für DLL verwendet werden
   endif

   if lIsLoaded
      if ::IsPageToPrint()
         *
         * ein Parameter NIL, der andere nicht dann proportional vergrößern
         * Rechtsbündig drucken
         * drehen ... ########################
         DEFAULT nXSize TO oBitmap:xSize
         DEFAULT nYSize TO oBitmap:ySize
         lSuccess:= oBitmap:draw( ::oPS, {aPos1[1],aPos1[2],aPos1[1]+nXSIZE,aPos1[2]+nySize} )
      endif
   else
      lSuccess := .f.
      if ::IsPageToPrint()
         GraStringAT(::oPS, {aPos1[1],aPos1[2]},"Kein Bild")
      endif
   endif
return lSuccess
eigentlich müsste der Unterschied in XbpBitmap() selbst liegen, wenn man also das Bitmap Objekt selbst erzeugen und einstellen könnte, sollte das helfen oder ?
wie ich sehe fehlt auch ein destroy() wenn man die XbpBitmap() in der Routine erstellt hat ...

Code: Alles auswählen

*-------------------------------------------------------------------
METHOD _HBPrinter:PrintBmp(nX,nY,nXSize,nYSize,cFileName,nID)
   local oBitmap,lSuccess:=.t.,aPos1:={}, lIsLoaded := .f., lIsToDestroy := .f.
   // infos zum Drehen ???
   /*
      Drehen mit linke obere und rechte untere Ecke vertauscht ????
   */
   // nx=xKoordinate, ny=yKoordinate, cFileName
   // nXSize=Breite in X, nYSize=Höhe in Y
   aPos1 := ::PosHBtoXPP(nX,nY)
   if valtype(uFileName)="O" // XbpBitmap() ... geht das so ?
      oBitmap := cFileName  // cFileName => uBitmap umbenennen ?
      oBitmap:presSpace( ::oPS )
      lIsLoaded := .t.
      lIsToDestroy := .f. // das müsste das aufrufende Programm übernehmen
   else
      oBitmap := XbpBitmap():new():create( ::oPS )
      if IsNil(nID)    // Dateiname der Bitmap wurde übergeben
         lIsLoaded := oBitmap:loadFile( cFileName )
      else             // Resource wurde angegeben, benutzen  HB
         lIsLoaded := oBitmap:load( cFileName , nID )   // hier kann cFileName für DLL verwendet werden
      endif
      lIsToDestroy := .t.
   endif
   if lIsLoaded
      if ::IsPageToPrint()
         * ein Parameter NIL, der andere nicht dann proportional vergrößern
         * Rechtsbündig drucken
         * drehen ... ########################
         DEFAULT nXSize TO oBitmap:xSize
         DEFAULT nYSize TO oBitmap:ySize
         lSuccess:= oBitmap:draw( ::oPS, {aPos1[1],aPos1[2],aPos1[1]+nXSIZE,aPos1[2]+nySize} )
      endif
      if lIsToDestroy
         oBitmap:destroy()
      endif
   else
      lSuccess := .f.
      if ::IsPageToPrint()
         GraStringAT(::oPS, {aPos1[1],aPos1[2]},"Kein Bild")
      endif
   endif
return lSuccess
würde das dein Problem lösen ?
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

nein, das bringt nichts, weil wie bereits geschrieben, Xbase++ 2.0 sich jetzt so verhält, wie in der Doku seit 1.9 steht. Ist der Presspace mit einem Printerobject verbunden, wird die Hintergrundfarbe ignoriert, in meinen Tests druckt er dann immer einen schwarzen Hintergrund.

Ich werde mal testen ob es was bringt, die transparente Hintergrundfarbe mit Weiß zu ersetzen, ob das dann geht. Das wäre dann auch gleich die Universallösung, weil herkömmliche Drucker kein Weiß drucken können. Stichpunkt farbiges Papier.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Kannst du mir eine kleine PNG mit klar erkennbarem transparentem Hintergrund und als BMP mit farbigem Hintergrund (z.B. rosa statt transparent) senden.
Kann Paint transparente Farben erstellen ?
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Siehe PN.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Wolfgang_B »

Hallo Hubert,
habe es jetzt endlich geschafft Deine HBPRINT-Klasse zum Laufen zu bringen. Jetzt stehen bei Beträgen endlich bei Proportionalsschrift die Kommastellen richtig übereinander. Sieht richtig gut aus - LOB!!
Darf ich die Klasse weiterhin in meinen Projekten verwenden?

Und noch eine Frage. Kann man beim Drucken eines Memotextes im Text den Font wechseln, weil man z.B. ein Wort Fett drucken will?

Ein schönes Wochenende

Gruß
Wolfgang
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

hallo,

die Klasse darf frei verwendet werden.

Die Methode ::PrintMemo() druckt einen Text in der einen eingestellten Schrift.
Man könnte Marker vorsehen (z.b. und ), in einer Ableitung darauf reagieren und aus dem a<ktuellen font einen fetten machen.
Einfach ist das nicht (insbesondere da fette Schrift breiter ist) und ich denke nicht dass ich mir das auflade ;-)

Ich nutze in diesen Fällen PrintText( NIL, NIL, ...) für den folgenden Text in einer Zeile, dazwischen kann man die Schrift wechseln.
Gruß
Hubert
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Wolfgang_B »

hm, hab ich mir schon gedacht...

Fällt mir gerade noch was auf. Wenn ich ein mehrseitiges Dokument drucken will Methode printform() und Methode Print(), zeigt er mir in der Vorschau nur die 1.Seite an. Ich kann zwar blättern, aber der angezeigte Inhalt ist nur die 1. Seite ...

Nochmals vielen Dank für die Klasse :) .

Gruß Wolfgang
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Wolfgang_B »

HAllo Hubert,

hat sich erledigt!! Hatte vergessen die ::nPageNo hochzuzählen.

Schönes Wochenende
Gruß Wolfgang
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

hast was finden können wg. png - Transparenz?

Was ist eigentlich die aktuelle Version der Druckerklasse? Auf Deiner HP steht 1.37, ich habe eine 1.39, die ist aber von 2013?

Hintergrund: PrintText druckt rechtsbündig nicht richtig bei Bold-Fonts. Da wird ein 1/2 Zeichen zu weit rechts gedruckt.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

tritt unter 1.9 und 2.0 auf, jedoch nicht bei Deiner Druckvorschau, nur bei PDF-Druck oder auf einen Drucker...
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Sorry, das mit der Transparenz habe ich vergessen, die Versionsnummer ist sehr seltsam, ich hab die letzten wohl nicht auf die Homepage gestellt :roll:

Code: Alles auswählen

  1.40 -  2015-03-13
           NEU  ::PrinterList()        => XbpPrinter():List()
           NEU  ::GetDefaultPrinter()  => XbpPrinter():New():Create():devName
           NEU  ::IgnoreBusy           => ::IsPrinterError() ignoriert XBPPRN_STATUS_BUSY
                  - erm”glicht das Drucken obwohl der Drucker auf BUSY steht.
                  - IgnoreBusy DEFAULT .f. => Fehler auch bei BUSY
                  - IgnoreBusy         .t. => KEIN Fehler bei BUSY
           NEU  ::IgnorePaused         => ::IsPrinterError() ignoriert XBPPRN_STATUS_PAUSED

   1.39 -  15.11.2013  (= 2013-11-15)
           NEU  ::PrintMemoLineMaxLen  speichert die l„ngste Zeile des zuletzt aufgerufenen ::PrintMemo(), ::PrintMemoPage()
           NEU  ::PrintArtBoxOffsetX   legt den Abstand Links/Rechts der cArt="B" Box zum Text fest, bisher fix 10 = 1 mm
           NEU  ::PrintArtBoxOffsetY   legt den Abstand Oben/Unten   der cArt="B" Box zum Text fest, bisher fix 10 = 1 mm

   1.38 -  14.11.2013  (= 2013-11-14)
           HBPRINTD.PRG - NTRIM() als STATIC FUNCTION erg„nzt, ERRBOX() => MSGBOX()

   1.37 -  04.04.2013  (= 2013-04-04)
                ::PrintMemo()  Fehler bei Seitenumbruch, gemeldet von <Werner_Bayern>
           NEU  ::abort()      Abbruch des Druckjobs, erstellt von <Werner_Bayern> aus dem Forum.
           NEU  ::PrintMemoCountLines(cMemoText,nMaxLineLen) ermittelt wieviele Zeilen ::PrintMemo() ben”tigen wird, ohne tats„chlich zu drucken.

PS: wie die Zeit verfliegt ...
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Kann man die 1.40 auch downloaden? :wink:

Dann würde ich mich damit auf die Suche machen bezgl. der BOLD-Schriften, die nicht korrekt rechtsbündig gedruckt werden.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Habs analysiert, es liegt an den jew. Fonts. Mache ich das mit Arial 11 und Arial 11 Fett, dann stimmt der rechte Rand nicht. Mache ich es z. B. mit 16.Angsana New, passt es.

Entweder liegts an GraQueryTextBox oder am jew. Font, auf alle Fälle nicht an Deiner Druckerklasse.

Warum machst Du eigentlich bei der PrintText-Methode bei IsPrintTextAlltrim ein Leerzeichen?

Code: Alles auswählen

      if cAusrichtung $ "LCZMR"         // cTxt ausgeben - print cTxt
         if IsPrintTextAlltrim          // wird auch von automatischer Positionierung benötigt.
            lSuccess   := GraStringAt(::oPS, aPos, cTxt+" " )
         else
            lSuccess   := GraStringAt(::oPS, aPos, cTxt )
         endif
      endif
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

vorab
Dateianhänge
HBPrintX-1.40-OEM.zip
(96.05 KiB) 327-mal heruntergeladen
HBPrintX-1.40-ANSI.zip
(99.21 KiB) 348-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Danke!

Nachtrag: Am Font liegts nicht, weil Word es auch richtig druckt und es in Deiner Druckvorschau ja auch passt. Scheint die Funktion GraQueryTextBox() zu sein? Der Presentation-Space?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

schick mal bitte ein SEHR KURZES Beispiel mit dem ich sehen kann was du meinst per PN mit ZIP Anhang ...
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:Scheint die Funktion GraQueryTextBox() zu sein? Der Presentation-Space?
wenn du an GraQueryTextBox() zweifelst dann probiere doch mal die Demo von Günter Beyes wo er GraQueryTextBox() mit der API Function GetTextExtentPoint32() verglichen hat.
Dateianhänge
GraTest.zip
(8.66 KiB) 334-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

brandelh hat geschrieben:schick mal bitte ein SEHR KURZES Beispiel mit dem ich sehen kann was du meinst per PN mit ZIP Anhang ...

Code: Alles auswählen

#pragma Library( "XppUI2.lib" )

function main
local oDlg, oDrucker, nPosY := 200, nPosX := 1000, cText := "Druckertest OXX"

oDlg := XbpPrintDialog():new()
oDlg:create()
oDrucker := oDlg:display()
oDlg:destroy()
if oDrucker == NIL   // kein Drucker gewählt!
   return NIL
endif

oDrucker := hbprinter():new(oDrucker):create()

if oDrucker:IsPrinterError()             // Fehler verhindern, avoid errors
   msgbox("Drucker ist nicht verfügbar !")
else
   oDrucker:addFont("11.Arial")
   oDrucker:addFont("11.Arial Fett")
   oDrucker:addFont("16.Angsana New Fett")
   oDrucker:setFont(1)
   oDrucker:StartDoc("Drucktest")
   oDrucker:PrintText( nPosX, nPosY, cText, "R")
   nPosY += oDrucker:LineFeed()
   oDrucker:setFont(2)
   oDrucker:PrintText( nPosX, nPosY, cText, "R")
   nPosY += oDrucker:LineFeed()
   oDrucker:setFont(1)
   oDrucker:StartDoc("Drucktest")
   oDrucker:PrintText( nPosX, nPosY, cText, "R")
   nPosY += oDrucker:LineFeed()
   oDrucker:setFont(3)
   oDrucker:PrintText( nPosX, nPosY, cText, "R")
   oDrucker:EndDoc()
endif
return NIL
Kurz genug? :)
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten