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
15%
Ich nutze HBPrinterX gelegentlich bzw. zusätzlich
10
26%
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
10
26%
Ich nehme XbpPrinter() pur
10
26%
 
Insgesamt abgegebene Stimmen: 39

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1622
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitrag von Werner_Bayern » Do, 07. Sep 2017 11:44

Servus Uwe,

bitte. Du könntest auch die Schrift um 1 oder 2 Punkte kleiner machen, bis es passt?
es grüßt euch

Werner

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14751
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

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

Beitrag von brandelh » Fr, 08. Sep 2017 11:04

Ok ich denke eine maximale Zeilenanzahl sollte leicht umsetzbar sein. Mal sehen.
Gruß
Hubert

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1622
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern

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

Beitrag von Werner_Bayern » Mo, 23. Okt 2017 10:42

Servus Hubert,

eine kleine Erweiterung bei _HBPrinter:PrintMemo

Code: Alles auswählen

    lNeedBox := .f.
    
    if ! empty(cArt)
       cArt := alltrim(upper(cArt))
       if cArt = "B"         // BOX zeichnen
          lNeedBox := .t.
          cArt  := NIL        // für PrintText() sperren
       endif
    endif
Damit können Memos dann auch unterstrichen, durchgestrichen etc. gedruckt werden - siehe :PrintText, Parameter cArt.
es grüßt euch

Werner

Benutzeravatar
Schorsch
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 25
Registriert: So, 21. Sep 2008 19:21
Wohnort: Sinsheim im Kraichgau

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

Beitrag von Schorsch » Di, 30. Apr 2019 12:00

Hallo,
Ich würde gerne dem Druckdokument, wenn ich es über einen PDF-Drucker ausgebe einen eigenen Namen mitgeben (aktuell wird immer HB-Printer verwendet).
Ich habe dies mit startdoc() geschafft - aber wenn ich die Methoden Print/Prinform verwende kann ich startdoc() nicht verwenden, das dies wohl an einer Stelle implizit verwendet wird, die ich nicht beeinflussen kann. (ich habe nur die Variable cAktivSpoolJobName gefunden)

Bitte um Hinweis, wie ich dem Dokument einen Namen mitgeben kann.

Ich nutze die Version HBPrinterklasse 1.40 mit Alaska 1.9 als auch 2.0.

Herzlichen Dank
Gruß
Schorsch

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14751
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

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

Beitrag von brandelh » Mi, 01. Mai 2019 19:19

cAktivSpoolJobName ich weiß nicht wo, aber die Richtung stimmt ;-)

schau mal im Beispiel Test-BOLD.PRG da wird der Wert einfach vorgegeben und intern dann an StartDoc() weiter gereicht ...

Code: Alles auswählen

oHBPrinter := MyHBPrinter():New():create()
if oHBPrinter:IsPrinterError()             // Fehler verhindern, avoid errors
   --- Fehler
else
   oHBPrinter:addFont("14.Arial")
   oHBPrinter:addFont("12.Arial")
   oHBPrinter:addFont({"Arial",12,.t.,.f.})       // Passender Bold Font !

   oHBPrinter:SpoolJobName := "TEST-BOLD - Probeausdruck 2"
   ...
   oHBPrinter:PrintingDialog( .t. , .t. , xbeK_ALT_P )
endif
In HBPRINT.PRG steht was dazu ...

Code: Alles auswählen

   1.31   -  10.12.2008  (= 2008-12-10)
                ...
                ::spoolJobName ==> siehe / like 1.90.337
ab der 1.90.335 (SL1) kennt der XbpPrinter() die Instanzvariable, die genutzt wird, laut Hilfe ist die aber schreibgeschützt.
Ich habe damals (2008) geschrieben, siehe 1.90.337 - also bitte in der Hilfe nachlesen, vermutlich ein Tippfehler das mit der 337 ;-)
Intern nutze ich eine Methode, die den Vorgabetext setzt, wenn nichts vorgegeben wurde

ACCESS ASSIGN METHOD SpoolJobName // verhält sich im Prinzip wie eine iVar, man kann also einfach zuweisen ohne () ...

egal welche Xbase++ Version man nutzt, intern setze ich den Inhalt dieser iVar ein um StartDoc() richtig zu belegen:

Code: Alles auswählen

*-------------------------------------------------------------
METHOD _HBPrinter:StartDoc(cText,nSetPageNo)
    local cAltDrive, cAltDir, cResetDir
    local uReturn := SELF
    DEFAULT cText TO ::SpoolJobName
    DEFAULT nSetPageNo TO 1
    cAltDrive := curdrive()
    cAltDir   := curdir()
    ::nPageNo := nSetPageNo
    ::_IsOpenStartDoc := .t.
    ::_cPrinterShowText := cText
    if IsMethod(::oPS:device(),"StartDoc")
       uReturn := ::oPS:device():StartDoc(cText)
    endif
    if cAltDrive # curdrive() .or. cAltDir # curdir()
       cResetDir := cAltDrive +":\"+ cAltDir
       curdrive(cAltDrive)
       curdir(cResetDir)
    endif
return uReturn
Weiter unten gibt es noch eine Methode, die auch den Namen nachträglich setzen sollte, macht das wirklich Sinn ?

Code: Alles auswählen

*-------------------------------------------------------------
METHOD _HBPrinter:SpoolJobName(cSpoolJobName)
   static cAktivSpoolJobName := NIL
   do case
      case ! IsNil(cSpoolJobName)   // Setzen !
           cAktivSpoolJobName := cSpoolJobName
           if ::_oPS:device():isDerivedFrom( "XbpPrinter" ) .and. ;
              IsMemberVar( ::_oPS:device(), "SpoolJobName" )
              ::_oPS:device():SpoolJobName := cSpoolJobName
           endif
      case IsNil(cAktivSpoolJobName)
           cAktivSpoolJobName := "HB-Printer"
           if ::_oPS:device():isDerivedFrom( "XbpPrinter" ) .and. ;
              IsMemberVar( ::_oPS:device(), "SpoolJobName" )
              ::_oPS:device():SpoolJobName := cSpoolJobName // Laut Hilfe eigentlich readonly ...
           endif
      otherwise
           if ::_oPS:device():isDerivedFrom( "XbpPrinter" ) .and. ;
              IsMemberVar( ::_oPS:device(), "SpoolJobName" )
              cSpoolJobName := ::_oPS:device():SpoolJobName
           endif
   endcase
return cAktivSpoolJobName
die Variable cAktivSpoolJobName ist mit STATIC auf jeden Fall intern ;-)
Gruß
Hubert

Benutzeravatar
Schorsch
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 25
Registriert: So, 21. Sep 2008 19:21
Wohnort: Sinsheim im Kraichgau

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

Beitrag von Schorsch » Mi, 01. Mai 2019 23:41

Hallo Hubert,

oHBPrinter:SpoolJobName := "TEST-BOLD - Probeausdruck 2"

Das war der entscheidende Tipp - das hat gut funktioniert - vielen Dank
Gruß
Schorsch

Antworten