Drucken mit HBPrinter - Was geht wie warum ???

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Wer kennt, nutzt oder verabscheut HBPrinterX ?

Ich nutze HBPrinterX ausschließlich
6
16%
Ich nutze HBPrinterX gelegentlich bzw. zusätzlich
9
24%
HBPrinterX habe ich früher mal genutzt
1
3%
geprüft, aber für mich ungeeignet
1
3%
der Schrott gehört verboten
0
Keine Stimmen
In nutze grundsätzlich keine Fremdprodukte
0
Keine Stimmen
Noch nie gehört oder kein Interesse
1
3%
Ich nutze Reportgeneratoren oder ähnliches
9
24%
Ich nehme XbpPrinter() pur
10
27%
 
Abstimmungen insgesamt : 37

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

Beitragvon brandelh » Mo, 26. Jan 2015 16:29

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon Schorsch » Di, 27. Jan 2015 11:15

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
Schorsch
Rookie
Rookie
 
Beiträge: 14
Registriert: So, 21. Sep 2008 18:21
Wohnort: Sinsheim im Kraichgau

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

Beitragvon brandelh » Di, 27. Jan 2015 13:49

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon Werner_Bayern » Mo, 30. Mär 2015 22:32

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon brandelh » Di, 31. Mär 2015 10:58

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon Werner_Bayern » Di, 31. Mär 2015 19:52

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon brandelh » Mi, 01. Apr 2015 7:44

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: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon brandelh » Mi, 01. Apr 2015 8:34

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon Werner_Bayern » Do, 02. Apr 2015 12:48

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon brandelh » Do, 02. Apr 2015 14:39

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon Werner_Bayern » Do, 02. Apr 2015 20:52

Siehe PN.
es grüßt euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon Wolfgang_B » Fr, 15. Mai 2015 16:48

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
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 121
Registriert: Do, 14. Jun 2007 17:22
Wohnort: 84169 Altfraunhofen

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

Beitragvon brandelh » Sa, 16. Mai 2015 9:57

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon Wolfgang_B » Sa, 16. Mai 2015 10:42

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
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 121
Registriert: Do, 14. Jun 2007 17:22
Wohnort: 84169 Altfraunhofen

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

Beitragvon Wolfgang_B » Sa, 16. Mai 2015 11:05

HAllo Hubert,

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

Schönes Wochenende
Gruß Wolfgang
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 121
Registriert: Do, 14. Jun 2007 17:22
Wohnort: 84169 Altfraunhofen

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

Beitragvon Werner_Bayern » Do, 03. Sep 2015 20:27

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon Werner_Bayern » Do, 03. Sep 2015 22:47

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

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon brandelh » Fr, 04. Sep 2015 5:53

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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon Werner_Bayern » Fr, 04. Sep 2015 11:58

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon Werner_Bayern » Fr, 04. Sep 2015 12:51

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon brandelh » Fr, 04. Sep 2015 12:55

vorab
Dateianhänge
HBPrintX-1.40-OEM.zip
(96.05 KiB) 35-mal heruntergeladen
HBPrintX-1.40-ANSI.zip
(99.21 KiB) 48-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon Werner_Bayern » Fr, 04. Sep 2015 13:01

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitragvon brandelh » Mo, 07. Sep 2015 7:10

schick mal bitte ein SEHR KURZES Beispiel mit dem ich sehen kann was du meinst per PN mit ZIP Anhang ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13183
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

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

Beitragvon AUGE_OHR » Di, 08. Sep 2015 3:03

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) 36-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10052
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

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

Beitragvon Werner_Bayern » Di, 08. Sep 2015 15:04

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 euch

Werner
Benutzeravatar
Werner_Bayern
Programmier-Gott
Programmier-Gott
 
Beiträge: 1207
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

VorherigeNächste

Zurück zu Drucken und Export

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast