Probleme mit Barcode Druck von HBPrint [erledigt]
Moderator: Moderatoren
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Probleme mit Barcode Druck von HBPrint [erledigt]
Hallo,
ich nutze die Druckerklasse von Hubert und auch die Möglichkeit Barcode EAN13 zu drucken seit einiger Zeit bisher ohne Probleme.
Für mich ziemlich unvermittelt treten jetzt ab und zu Probleme auf, bei denen es aussieht, als ob 2 Zahlen übereinander gedruckt würden.
Immer an der 4ten und letzten Stelle und ersmals ist das Problem auch aufgetreten beim drucken in Datei mit dem PDFcreator. Im Beiliegenden Dokument habe ich die 3 Beispiele dargestellt und die Code-Zeilen, mit denen ich drucke bzw den Barcode erzeuge.
Diese Probleme sind erstmals aufgetreten, als ich den Barcode von der Größe 0,82 auf 1 geändert habe.
ich nutze die Druckerklasse von Hubert und auch die Möglichkeit Barcode EAN13 zu drucken seit einiger Zeit bisher ohne Probleme.
Für mich ziemlich unvermittelt treten jetzt ab und zu Probleme auf, bei denen es aussieht, als ob 2 Zahlen übereinander gedruckt würden.
Immer an der 4ten und letzten Stelle und ersmals ist das Problem auch aufgetreten beim drucken in Datei mit dem PDFcreator. Im Beiliegenden Dokument habe ich die 3 Beispiele dargestellt und die Code-Zeilen, mit denen ich drucke bzw den Barcode erzeuge.
Diese Probleme sind erstmals aufgetreten, als ich den Barcode von der Größe 0,82 auf 1 geändert habe.
Gruß
Schorsch
Schorsch
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Probleme mit Barcode Druck von HBPrint
du solltest den Quellcode posten, damit man mehr sehen kann.
local cEan12 := "2230"+cExemplar+"0"+strZero(val(cLiefSNr),6,0)
für mich sieht das nach 12 Stellen + Prüfziffer erstmal richtig aus, aber die Länge von cExemplar ist unbekannt.
Es scheint als ob zusätzliche Zeichen auf diese Stellen gedruckt werden, keine Ahnung warum.
Ich habe mit meinem Beispielprogramm deine Werte eingegeben, 100 % entspricht Faktor 1, und auf meinen Standarddrucker (eDocPrinter PDF Pro) ausgegeben. Fehlerfrei.
In meinem Quellcode der Funktion werden auch die 3 Blocks eindeutig in einem Rutsch gedruckt, wodurch ein "überdrucken" hier nicht möglich ist:
Ich vermute daher, dass durch die Faktor Änderung der Block etwas größer wurde und mit einem anderen Text von dir zusammentrifft.
local cEan12 := "2230"+cExemplar+"0"+strZero(val(cLiefSNr),6,0)
für mich sieht das nach 12 Stellen + Prüfziffer erstmal richtig aus, aber die Länge von cExemplar ist unbekannt.
Es scheint als ob zusätzliche Zeichen auf diese Stellen gedruckt werden, keine Ahnung warum.
Ich habe mit meinem Beispielprogramm deine Werte eingegeben, 100 % entspricht Faktor 1, und auf meinen Standarddrucker (eDocPrinter PDF Pro) ausgegeben. Fehlerfrei.
In meinem Quellcode der Funktion werden auch die 3 Blocks eindeutig in einem Rutsch gedruckt, wodurch ein "überdrucken" hier nicht möglich ist:
Code: Alles auswählen
// 1. Ziffer links vor dem Block
x := aPos[1] + nBarLineDim * 4
y := aPos[2] + nBarShortLineOffset + (nBarShortLineOffset-nBarLongLineOffset)/2
GraStringAt(oPS, {x,y}, left(uEAN13_Nr,1) )
// 2. Text beginnt: linker Rand + 3 Startsequenz + 7 Linien
x := aPos[1] + nBarLineDim * (nBarLeftBlankLines+3+7)
y := aPos[2] + nStringOffset
GraStringAt(oPS, {x,y}, substr(uEAN13_Nr,2,6) )
// 3. Text beginnt: linker Rand + 3 Startsequenz + 6*7 Linien + 5 Mitte + 4
x := aPos[1] + nBarLineDim * (nBarLeftBlankLines+3+6*7+5+4)
y := aPos[2] + nStringOffset
GraStringAt(oPS, {x,y}, substr(uEAN13_Nr,8,6) )
Gruß
Hubert
Hubert
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Re: Probleme mit Barcode Druck von HBPrint
Halio Hubert,brandelh hat geschrieben: ↑Mi, 04. Aug 2021 0:44 du solltest den Quellcode posten, damit man mehr sehen kann.
local cEan12 := "2230"+cExemplar+"0"+strZero(val(cLiefSNr),6,0)
für mich sieht das nach 12 Stellen + Prüfziffer erstmal richtig aus, aber die Länge von cExemplar ist unbekannt.
Es scheint als ob zusätzliche Zeichen auf diese Stellen gedruckt werden, keine Ahnung warum.
erstmal Dank für die schnelle Antwort und die ersten Hinweise.
ich poste hier den anonymisierten Teil eines Lieferscheindrucks bei dem dieser beschriebene Fehler auftritt - allerdings auf dem Drucker für mich nicht reproduzierbar.
Dein Hinweis auf die Variable "cExemplar" ist wahrscheinlich bei der Fehlersuche entscheidend. Sie ist 1stellig Character und kann die Werte 1-5 annehmen. Dadurch, dass immer die 5te und die 13te Stelle des Barcode überdruckt wird ist meine Vermutung, dass der Barcode 2 mal gedruckt wird mit jeweil einer anderen(nächsten) Exemplarnummer.
Denn dieses Phänomen lässt sich bei der Druck-Vorschau (Preview) beim Druck von allen 5 Exemplaren reproduzieren- und es tritt nicht auf, wenn nur ein einzelnes Exemplar gedruckt(angezeigt) wird.
Was bei der Druck-Vorschau auch komisch ist, dass auch bei einseitigem Lieferschein (und nur ein Exemplar) eine 2te Seite angezeigt wird, auf der nur der Barcode angezeigt wird - sonst garnix.
Ich stehe vor einem ziemlichen Rätsel, da ich keine Stelle bei mir im Code finde, in dem der Barcode 2 mal gedruckt werden soll.
Code: Alles auswählen
/* erstellt 24.1.2015 hje
Drucken des Lieferscheins -> HBPrint im GUI/Grafikmodus
Spezialitaet: "Komplett" = 5 Kopien (identischer Inhalt) mit 4 Exemplaren mit
bunten Streifen am rechten Rand und alle mit einer "Empf„ngerzeile" unter dem Logo
Parameter: Lieferschein-Nummer / Formular(nummer) (0=alle5,1=Kunde,2=Spedi,3=Kommi,4=Lager,5=Dispo, 7=1+2+4)
Verwendung von HB_Print Class Spezialit„t - eigene Methode PrintInhalt definiert um denselben Liefer-
schein 5 mal mit Formularfarbe und Exemplar-Name zu drucken.
----------------------------------------------------------------------
Last change: HJE 04.08.2021 22:23:17
*/
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "xbpdev.ch"
procedure LiefWDru(cLiefersNr,nFormular)
local oHBPrinter
private n1TextZeile := 740 && Zeile 11
private n2TextZeile := 740 && Zeile 11
private cAusgabeTxt := "" && Zusammenbau von Textzeilen
oHBPrinter := LiefPrinter():New():create()
if oHBPrinter:IsPrinterError() // Fehler verhindern, avoid errors
cls
*N_meldung(2,"Standarddrucker ist nicht verfgbar !")
ErrBox("Standarddrucker ist nicht verfgbar !","Druckerfehler")
?
? "Status: ",oHBPrinter:printerStatus(),"=",cPrinterStatus(oHBPrinter:printerStatus())
?
wait
else
*---------------- Fonts nur einmal erzeugen - create fonts only once ------
#define HB_FONT_7Arial 1
#define HB_FONT_8Arial 2
#define HB_FONT_14Arial 3
#define HB_FONT_10Arial 4
#define HB_FONT_12Arial 5
#define HB_FONT_12Arialfett 6
#define HB_FONT_20Arial 7
oHBPrinter:addFont("7.Arial")
oHBPrinter:addFont("8.Arial")
oHBPrinter:addFont("14.Arial")
oHBPrinter:addFont("10.Arial")
oHBPrinter:addFont("12.Arial")
oHBPrinter:addFont({"Arial",12,.t.,.f.})
oHBPrinter:addFont({"Arial",20,.f.,.f.})
oHBPrinter:nDokument := nFormular && kommt als šbergabeparameter 0-5
oHBPrinter:acFormularTitel := { "Exemplar fr Kunde", "Exemplar fr Spedition","Exemplar fr Kommission","Exemplar fr Lager","Exemplar fr Disposition" }
oHBPrinter:nSeiteImDokument := 1 && muss extra verwaltet werden da 5 Dokumente geduckt werden
oHBPrinter:PrintingDialog( .t. ,; // ESC -> close
.t. ,; // ALT+Enter and Enter will Print
xbeK_ALT_P) // ALT+P will print
endif
if select("KuStamm") > 0
close KuStamm
endif
if select("Lieftext") > 0
close Lieftext
endif
if select("RechPos") > 0
close RechPos
endif
if select("ArtStamm") > 0
close ArtStamm
endif
if select("Baustell") > 0
close Baustell
endif
return
* Lieferscheindruckprogramm beendet
*-----------------------------------------------------------------------------------------------------
CLASS LiefPrinter from HBPrinter
EXPORTED:
METHOD Print // Alle variablen Druckausgaben werden hier definiert, wenn n”tig wird ein
// Seitenwechsel durchgefhrt, der Seitenz„hler erh”ht und ::PrintForm() aufgerufen.
METHOD PrintForm // Alle fixen Bestandteile einer Seite, egal ob unten oder oben werden hier definiert,
// hier wird KEIN Seitenumbruch aufgerufen, denn der k”nnte unn”tig sein (1.Seite).
// Never call ::NewPage() inside.
METHOD PrintInhalt // konstanten Inhalt der 5 Kopien der variablen Anteile von Print
VAR nDokument // wenn mehre (in unserem Fall maximal 5) in einem Druckjob sind, muss man sie sich merken
VAR nFormularArt // hier wird in Print() "0=alle5",1="Kunde",2=Spedi,3=Kommi,4=Lager,5=Dispo" eingetragen
// und PrintForm() reagiert mit Titel und Farbe
VAR cFormularFarbe // als Farbwert vor dem Aufruf von PrintKopf() oder als Array wenn FormularArt als Index dient.1=weiss,2=grau,3=rot,4=gelb,5=blau
VAR acFormularTitel // { "Exemplar fr Kunde", "Exemplar fr Spedition","Exemplar fr Kommission","Exemplar fr Lager","Exemplar fr Disposition"]
// => ::FormularTitel[::FormularArt] => "Exemplar fr Kunde" bei ArrayPlatz[1]
VAR nSeiteImDokument // bei mehreren gleichen Exemplaren in einem Druckjob, passt der eingebaute Seitenz„hler nicht mehr, selbst verwalten !
ENDCLASS
*-------------------------------------------------------------
* die folgenden Methoden anpassen - folowing methods has to be modified
*-------------------------------------------------------------
METHOD LiefPrinter:PrintForm() // Alle fixen Bestandteile einer Seite, egal ob unten oder oben werden hier definiert,
// hier wird KEIN Seitenumbruch aufgerufen, denn der k”nnte unn”tig sein (1.Seite).
// Never call ::NewPage() inside.
local altFont, cText,cAusgabeTxt ,at_pseudo
local nSelectMerk := 0 // um zum Kundenstamm wechseln zu k”nnen wegen Verarbeiter-Suche
local aAttribAlt // Array um Farbattribute zu merken
MEMVAR n1TextZeile, n2TextZeile, cBauOrt, cBauStrasse, cBauPLZ, cBauBemerk, cAvisMobil, cBauName
MemVar cGewichtDruck , cSpedName
altFont := ::SetFont(HB_FONT_10Arial)
// Kopf mit Logo drucken kopf.jpg muss im Verzeichnis stehen
::PrintBmp(180,400,1800,320,"kopf.jpg")
::SetFont(HB_FONT_10Arial) && ca 52 Zeilen/Seite
do case
case ::nSeiteImDokument = 1
::PrintText( 200,495, rtrim(Kustamm->Kuname)+rtrim(" "+kustamm->KuNamZu)) // Kundenname in Zeile 6
cAusgabeTxt := dtoc(lieftext->liefdatum) // Lieferschein-Belegdatum
::PrintText( 1992,544, cAusgabeTxt,"R") // Datum auf Zeile 7 Drucken
::PrintText( 200,593, Kustamm->KUSTRASSE) // in Zeile 8
cAusgabeTxt := "Unser Zeichen: "+ Name_lang(LiefText->PName_Kurz) // Unser zeichen
::PrintText( 1992,593, cAusgabeTxt,"R") // Unser zeichen auf Zeile 8 Drucken
cAusgabeTxt := "eMail: "+eMail_Adr(LiefText->PName_Kurz)
::PrintText( 1992,642, cAusgabeTxt,"R") // Mailadresse auf Zeile 9 Drucken
*mehrerer Printtext-Ausgaben
if len(trim(LiefText->KuBestNr)) > 0
::PrintText( 200,n1TextZeile, "Kundenbestellnummer: "+LiefText->KuBestNr) // maximal in Zeile 16
n1TextZeile := n1TextZeile +::LineFeed()
endif
n1TextZeile := n1TextZeile +::LineFeed()
n2TextZeile := n1TextZeile
*Barcode
::PrintBarCodeEan13(1640,n2TextZeile+20,make_LS_EAN13(lieftext->liefersnr,str(::nFormularArt,1)),1.0) && barcode drucken
otherwise
n2TextZeile := 544 && zeile 7
endcase
* Formularexemplar(fr wen) direkt unter Logo HB_FONT_12Arialfett
* 1892 als rechten Rand gew„hlt um bndig mit Aussenrand Logo zu sein
cAusgabeTxt := ::acFormularTitel[::nFormularArt] // Welches der 5 Exemplare wird gerade gedruckt = oHBPrinter:nFormularArt
::SetFont(HB_FONT_12Arialfett) && groáe Schrift
::PrintText( 1992,446, cAusgabeTxt,"R") // Exemplarempf„nger auf Zeile 5 Drucken (20.4.2020 von 6 auf 5)
::SetFont(HB_FONT_20Arial) && groáe Schrift
::PrintText(200,n2TextZeile, "LIEFERSCHEIN Nr. "+ltrim(lieftext->liefersnr) ) // Text fr alle Seiten - text for all pages
::SetFont(HB_FONT_10Arial) && zurck auf Normalschrift
::PrintTextAlltrim := .f. // fhrende Blanks mit drucken !
cAusgabeTxt := "Kundennummer "+LiefText->KUNUMMER
cText ="Hinweis: Aus versicherungstechnischen Grnden "+;
"Verladung der Ware selbst verantwortlich!"
::SetFont(HB_FONT_7Arial)
if cSpedName = "Selbstabholer"
*rot drucken und nur wenn selbstabholer
::PrintMemo( 200, 2679 , cText, "L",,,GRA_CLR_RED,,2725) // Fusszeile ab Zeile ?
endif
cText := "4 zeiliger text"
::PrintMemo( 200, 2747 , cText, "L",,,,,2936) // Fusszeile ab Zeile 51
//::PrintMemo( nPosX, nPosY, cTxt, cAusrichtung, nMaxLen, cArt, nFarbe, cHochQuer, nMaxBis,nLineFeed )
::SetFont(altFont)
*GRA_CLR_BLUE Blau
*GRA_CLR_RED Rot
*GRA_CLR_YELLOW Gelb
*GRA_CLR_PALEGRAY Hellgrau
*GRA_CLR_WHITE Weiá
aAttribAlt := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_WHITE }} ) // Farblos als Grundeinstellung
do case
case ::nFormularArt = 1 && Kunde /weiss
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_WHITE }} )
case ::nFormularArt = 2 && Spedition /grau
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_PALEGRAY }} )
case ::nFormularArt = 3 && Kommission / rot
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_RED }} )
case ::nFormularArt = 4 && Lager / gelb
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_YELLOW }} )
case ::nFormularArt = 5 && Disposition / blau
at_pseudo := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_BLUE }} )
endcase
::PrintBox(2030,472,50,2710,"R", GRA_FILL ) // Parameter nFill => GraBox()
::ReSetAttrArea( aAttribAlt )
return self
*-------------------------------------------------------------
METHOD LiefPrinter:Print() // Alle variablen Druckausgaben werden hier definiert, wenn n”tig wird ein
// Seitenwechsel durchgefhrt, der Seitenz„hler erh”ht und ::PrintForm() aufgerufen.
local i ,nPosY
* Versuch Seitennummer 1 nicht setzen (auf default vertrauen) (dann wird nur Seite 2 ohne 1 in Vorschau angezeigt)
::nPageNo := 1
::lFirstPageForm := .t. // Formular 1. Seite noch nicht gedruckt - form 1. page not printed
::SetFont(HB_FONT_10Arial)
if str(::nDokument,1,0) $ "12345" && Einzelformuladruck nur 1-5 zul„ssig (nicht bei 0 und 7und 8)
::nFormularArt := ::nDokument && kommt als šbergabeparameter 1-5
::nSeiteImDokument := ::nPageNo
::PrintForm() // nur gewnschte Kopie-Nr (1-5) drucken
::PrintInhalt()
endif
if ::nDokument = 0 && alle 5 Kopien nacheinader ausgeben
for i = 1 to 5
* ab 8.9.2016 Formular Druckreihenfolge 3 1 2 4 5
* ::nFormularArt := i && 1-5 in derselben Reihenfolge(bis 8.9.16)
do case
case i = 1
::nFormularArt := 3
nPosY := ::nFirstLine
::nSeiteImDokument := ::nPageNo
*::NewPage()
::PrintForm()
::PrintInhalt()
case i = 2
::nFormularArt := 1
::nSeiteImDokument := 1
::NewPage()
::PrintForm()
::PrintInhalt()
case i = 3
::nFormularArt := 2
::nSeiteImDokument := 1
::NewPage()
::PrintForm()
::PrintInhalt()
case i = 4
::nFormularArt := i
::nSeiteImDokument := 1
::NewPage()
::PrintForm()
::PrintInhalt()
case i = 5
::nFormularArt := i
::nSeiteImDokument := 1
::NewPage()
::PrintForm()
::PrintInhalt()
endcase
next
endif
return self
*-------------------------------------------------------------
* die folgenden Methoden anpassen - folowing methods has to be modified
*-------------------------------------------------------------
METHOD LiefPrinter:PrintInhalt() // Alle variablen Inhalte pro Lieferschein - die aber konstant pro Kopie bleiben,
local PosX, PosY
local nAnzVollPal := 0 && Bei Umrechnungsm”glichkeit Anzahl volle Paletten
local nAnzRestStueck := 0 && Bei Umrechnungsm”glichkeit Anzahl Rest in Stck
local nAnzLagen := 0 && Bei Umrechnungsm”glichkeit Anzahl komplette Lagen
local cAusgabeTxt := ""
MEMVAR n1TextZeile, n2TextZeile
MemVar cSpedName , cArbeitsort,cGewichtDruck
private sum_qm := 0.00 && QM pro Lieferschein summieren
private PosXMenge := (387+60) && spalten merken frs drucken rechtsbndig (alle +60 nach rechts-29.1.15)
private PosXMeh := (407+60) && spalten merken frs drucken
private PosXArtNummer := (494+60) && spalten merken frs drucken
private PosXArttext := (790+50) && Abstand zu rechtem Rand ?
private cLogDatei := ConfDat("LiefLogW.TXT") && um bei Bedarf Zwischenwerte zu speicher mit set alternate
PosX := 200 && linker Rand erste Printposition
do case
case ::nSeiteImDokument = 1
::nFirstLine := n1TextZeile
otherwise
::nFirstLine := n2TextZeile
endcase
PosY := ::nFirstLine && erst jetzt ist PosY richtig besetzt (HB)
select RechPos
set relation to RechPos->artnummer into artstamm
seek LIEFTEXT->LIEFERSNR && Positionsendatei steht auf erster Position
do while RechPos->LIEFERSNR = LIEFTEXT->LIEFERSNR .and. .not. eof()
if (PosY+::LineFeed(5)) >= 2748 .or. PosY < 0 // Passen 5 Zeilen(=1 Position noch hin oder ist voll (Zeile 51=2700 =Unterkante Zeile 51)
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(1992, 2700 ,"Fortsetzung ->","R") // Zeile 51
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
if ::IsAfterLastPage() // Ist Shortcut m”glich ? (spart Zeit, wichtig fr Vorschau !)
exit
endif
PosX := 200
*PosY := ::nFirstLine
PosY := n2TextZeile
endif
::PrintText( PosX+60, PosY ,RechPos->LIEFPOSNR,"R",60)
::PrintText( PosXMenge, PosY ,Transform(RechPos->LIEFMENGE,"@E 99,999.99"),"R",210)
do case
case RechPos->MERECH = "QM "
::PrintText( PosXMeh, PosY ,"mý ")
if val(Artstamm->EloesKonto) = 10 // QM Summen ermitteln
sum_qm := sum_qm+RechPos->liefmenge
endif
case RechPos->MERECH = "M "
::PrintText( PosXMeh, PosY ,"m ")
case RechPos->MERECH = "CBM"
::PrintText( PosXMeh, PosY ,"CBM") // noch fr hoch 3 suchen
case RechPos->MERECH = "ST "
::PrintText( PosXMeh, PosY ,"St.")
case RechPos->MERECH = "L "
::PrintText( PosXMeh, PosY ,"l ")
otherwise
::PrintText( PosXMeh, PosY ,RechPos->merech)
endcase
* PosXArtNummer := PosX && beginn der Stelle fr die Artikelnummer merken wg ™norm
::PrintText( PosXArtNummer, PosY ,RechPos->ARTNUMMER)
::PrintText( PosXArttext, PosY,ArtTextZeile(1,65),"L") && ohne L„ngenbegrenzung
PosY += ::LineFeed()
if rechpos->liefstueck <> 0 .and. .not. rtrim(ARTSTAMM->MERECH) $ 'ST,SET'
::PrintText( PosXMenge, PosY ,Transform(RechPos->liefstueck,"@E 999,999"),"R",210)
::PrintText( PosXMeh, PosY ,"St.")
endif
if len(trim(ArtTextZeile(2,65))) > 0
::PrintText( PosXArttext, PosY ,ArtTextZeile(2,65))
if len(trim(ArtTextZeile(3,65))) > 0
PosY += ::LineFeed()
::PrintText( PosXArttext, PosY ,ArtTextZeile(3,65))
endif
if len(trim(ArtTextZeile(4,65))) > 0
PosY += ::LineFeed()
::PrintText( PosXArttext, PosY ,ArtTextZeile(4,65))
endif
endif
if rechpos->Liefstueck <> 0
cAusgabeTxt := "" && Text leeren, denn falls Umrechnung nicht m”glich wird sonst der letzte Text ausgegeben
if artstamm->STPROPAL > 0
nAnzVollPal := int(rechpos->Liefstueck / Artstamm->StProPal)
nAnzRestStueck := rechpos->Liefstueck % artstamm->StProPal
cAusgabeTxt := "kompl ="+ltrim(str(nAnzVollPal,3,0))
if artstamm->STPROLAGE > 0
if nAnzRestStueck <> 0
nAnzLagen := int(nAnzRestStueck / artstamm->StProLage)
nAnzRestStueck := nAnzRestStueck % artstamm->StProLage
if nAnzLagen <> 0
cAusgabeTxt := cAusgabeTxt + " Lagen ="+ltrim(str(nAnzLagen,3,0))
endif
endif
if nAnzRestStueck <> 0
cAusgabeTxt := cAusgabeTxt + " lose Stck ="+ltrim(str(nAnzRestStueck,3,0))
endif
endif
endif
if len(trim(ArtTextZeile(2,65))) > 0 && Neu Zeile nur wenn 2te Artikeltextzeile vorhanden
PosY += ::LineFeed() && sonst in dieselbe Zeile drucken wie "Stckzahl"
endif
::PrintText( PosXArttext, PosY ,cAusgabeTxt)
endif
if len(trim(Artstamm->OeNorm)) > 0
PosY += ::LineFeed()
::PrintText(PosXArtNummer, PosY ,"™Norm/DIN")
::PrintText(PosXArttext, PosY ,ARTSTAMM->oenorm)
endif
skip+1
PosY += ::LineFeed() && Zeilenvorschub
PosX := 200 && Startwert linker Rand
enddo
if sum_qm > 0 // Summe QM pro LiefText speichern
select LiefText
reclock(30)
LiefText->LIEFSUQM := sum_qm
dbcommit()
dbunlock()
endif
if (PosY+::LineFeed(10)) >= 2728 .or. PosY < 0 // Passen 9 Zeilen noch hin oder ist voll (Zeile 59=2727 =Unterkante Zeile 59)
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosXArtNummer, PosY ,"F O R T S E T Z U N G -->")
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
PosX := 200
PosY := n2TextZeile
endif
PosX := 200 && linken Rand wieder auf 200 setzen
PosY += ::LineFeed(2) && Zeilenvorschub 2 zeilen(damit 1 Leerzeile ensteht)
// --- Einmalige Lieferschein Fusstexte
if cSpedName = "Selbstabholer"
if (PosY+::LineFeed(12)) >= 2749 .or. PosY < 0 // Passen 9 Zeilen noch hin oder ist voll Zeile 51 endet bei 2748
PosX := 230
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosXArtNummer, PosY ,"F o r t s e t z u n g-->")
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
PosY := n2TextZeile
endif
::PrintText(PosX, PosY , "Transport .")
if kustamm->KULAND <> "DE"
PosY += ::LineFeed(1) && Zeilenvorschub
::PrintText(PosX, PosY ,"Auslieferung ")
endif
else
::PrintText(PosX, PosY , "Gefahren durch: "+trim(substr(cSpedName,1,30))+" Rckgabe.")
endif
if cGewichtDruck = "J"
PosY += ::LineFeed(1) && Zeilenvorschub
::PrintText(PosX, PosY , "Objekt Nr:" + str(LiefText->LiefGewi,8,0))
::PrintText(PosXArttext, PosY ,"Abgeladen")
endif // if cGewichtDruck = "J"
PosY += ::LineFeed(2) && Zeilenvorschub
::PrintText(PosX, PosY , "_____________________________")
if cArbeitsort = "DS"
if (PosY+::LineFeed(9)) >= 2749 .or. PosY < 0 // Passen 9 Zeilen noch hin oder ist voll Zeile 51 endet bei 2748
PosX := 230
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosXArtNummer, PosY ,"F o r t s e t z u n g-->")
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
PosY := n2TextZeile
endif
PosY += ::LineFeed(2) && Zeilenvorschub
::SetFont(HB_FONT_12Arialfett)
::PrintText(PosX, PosY ,">> Qualit„t ")
::SetFont(HB_FONT_10Arial)
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," KG")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," Lager")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," An ")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," 7")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," T")
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosX, PosY ," F")
endif
return self
*---------------------------------------------------------------------------------------
/*
Name : Make_LS_EAN13(Lieftext->Liefersnr,cExemplar)
Does : generiert aus der Lieferscheinnummer und dem Exemplar einen 13stelligen EANCode
Parameters : Lieferscheinnummer(mit fhrenden 0) und Exemplar beide caracter
Returns : EAN-Code fr das jeweilie Lieferscheinexemplar
Notes : Konzeptionell setzt sich der EAN fr Lieferscheine folgendermassen zusammen:
- Stelle 1 = "2" ->Festlegung fr "private" EAN13-Numern
- Stelle 2-4 = "230" ->Dokumentenschlssel
- Stelle 5 = "1"-"5" ->fr die Subkategorie der Lieferscheine
- Stelle 6 = "0" ->aktuell nicht benutzt
- Stelle 7-12 = 6-stellige Lieferscheinnummer mit fhrender 0
- Stelle 13 ="?" ->Werte 0-9 ist die Prfziffer fr EAN13
Author : hje
Date Created : 17.04.2021
Time Created : 19:17
*/
FUNCTION Make_LS_EAN13(cLiefSNr,cExemplar)
local cEan13Nr := ""
local cEan12 := "2230"+cExemplar+"0"+strZero(val(cLiefSNr),6,0)
* Zusammensetzen
cEan13Nr := cEan12+GraBarcodeEAN13_CalcCheckDigit(cEan12)
RETURN (cEan13Nr)
*---------------------------------------------------------------------------------------
* eof LiefWDru
Gruß
Schorsch
Schorsch
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Re: Probleme mit Barcode Druck von HBPrint
Hallo Hubert,
ich habe mit dem oben gezeigten Lieferscheindruckprogramm jetzt einige Stunden getestet.
Als erstes habe ich die 5 erzeugten Barcodes an unterschiedliche Stellen im jeweiligen Dokument plaziert (nebeneinander).
Dadruch habe ich folgendes festgestellt:
Vorausschicken muss ich, das ich immer deinen HBDialog verwende
1. Beim direkten Drucken des Gesamtpaketes (alle 5 Exemplare) ist kein Fehler feststellbar.Auf jeder Seite wird der richtige Barcode an der vorgesehenen Stelle gedruckt.
2. Bei der Vorschau-Anzeige des Gesamtpaketes werden auf allen Seiten alle 5 Barcodes angezeigt plus einer 6ten Seite, auf der nur die 5 Barcodes ohne sonstigen Text angezeigt werden.
3. Beim Drucken der 6ten Seite wärend dem Vorschau-Anzeigen wird auch auf dem Drucker die gewünschte Seite mit allen 5 Barcodes gedruckt.
Ich vermute deshalb einen Zusammenhang zwischen Vorschau-Aufbereitung und Barcode-Ausgabe. Es erscheint so, als ob die Barcode-Ausgabe "stehen bleibt" für alle Seiten und dies dann unter diesen Umständen auch beim Drucken fortsetzt/beibehält.
Ich muss zugeben, dass ich deine Klassen(HBPrint Version 1.41 + HB_XPP_Barcode_EAN13 1.0 2003-05-16) nur benutze und nicht wirklich analysieren kann, deshalb meine BItte um Erläuterung, ob ich dies nur falsch benutze oder wirklich ein Fehler vorliegt.
Danke
ich habe mit dem oben gezeigten Lieferscheindruckprogramm jetzt einige Stunden getestet.
Als erstes habe ich die 5 erzeugten Barcodes an unterschiedliche Stellen im jeweiligen Dokument plaziert (nebeneinander).
Dadruch habe ich folgendes festgestellt:
Vorausschicken muss ich, das ich immer deinen HBDialog verwende
1. Beim direkten Drucken des Gesamtpaketes (alle 5 Exemplare) ist kein Fehler feststellbar.Auf jeder Seite wird der richtige Barcode an der vorgesehenen Stelle gedruckt.
2. Bei der Vorschau-Anzeige des Gesamtpaketes werden auf allen Seiten alle 5 Barcodes angezeigt plus einer 6ten Seite, auf der nur die 5 Barcodes ohne sonstigen Text angezeigt werden.
3. Beim Drucken der 6ten Seite wärend dem Vorschau-Anzeigen wird auch auf dem Drucker die gewünschte Seite mit allen 5 Barcodes gedruckt.
Ich vermute deshalb einen Zusammenhang zwischen Vorschau-Aufbereitung und Barcode-Ausgabe. Es erscheint so, als ob die Barcode-Ausgabe "stehen bleibt" für alle Seiten und dies dann unter diesen Umständen auch beim Drucken fortsetzt/beibehält.
Ich muss zugeben, dass ich deine Klassen(HBPrint Version 1.41 + HB_XPP_Barcode_EAN13 1.0 2003-05-16) nur benutze und nicht wirklich analysieren kann, deshalb meine BItte um Erläuterung, ob ich dies nur falsch benutze oder wirklich ein Fehler vorliegt.
Danke
Gruß
Schorsch
Schorsch
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Probleme mit Barcode Druck von HBPrint
Ich sehe bei dir teilweise private oder public Variablen, gemischt mit local und Member Variablen.
Ich nutze nie private !
Weiterhin wird im Dokument oft eine direkte 1/10mm Angabe geschrieben, das ist mit der Zeit unübersichtlich.
Entweder es sind fixe Werte, dann setze ich #define ein oder ich erweitere (wie du teilweise auch) die Class um exported Membervars.
Meine Druckvorschau biegt einfach die Presentationspace von einem Drucker auf das Static des Fensters und danach zurück.
Beim Drucken wird alles neu ausgegeben, somit dürfte es keine Wechselwirkungen geben, aber die Private könnten da irgendwie noch anders besetzt sein !
Was ich sicher sagen kann ist, dass wenn wirklich 2 Barcodes mit unterschiedlichen EAN Nummern übereinander gedruckt werden würden, dann müssten die Linien der Barcodes sich von den anderen ausdrucken unterscheiden, denn die Linien des Barcodes sind ja die codierte Nummer. Die 6. Seite sollte nur dann einen Inhalt anzeigen, wenn PRINT auch diese ausgibt.
Wenn die Linien der Barcodes nicht unterschiedlich sind, muss der eine unterschiedliche Buchstabe von einer andern Druckausgabe kommen, ich weiß jetzt nicht welche 1/10 mm Angabe diese Zeile des Barcodes hat, aber mit Messen und nachsehen sollte man das finden.
Meine Klassen drucken nicht von sich aus Inhalte doppelt, würden sie das tun, müsste das immer vorkommen.
Eine Wechselwirkung mit private vars kann ich aber auch nicht ausschließen, daher verwende ich diese nicht.
Beispiel für meine #defines:
#define nLogoX 200
#define nLogoY 2700 // ausgerechnet aus Seitenhöhe-Bildhöhe ...
#define nAdressY ....
#define nLinkerRand 250
der Nachteil von #defines ist, dass diese nicht im Programm dynamisch berechnet werden können (z.B. Oberer Rand - tatsächliche Bildhöhe des Logos)
daher bin ich großzügig mit member vars für solche Angaben.
Egal wie man es macht, wenn man so alle fixen Punkte an einer Stelle definiert hat, fällt einem leichter auf, dass sich da was überschneiden könnte.
Die dynamischen Zeilen z.B. durch größere Elemente in einen fixen Druckbereich rutschen.
Mehr ist anhand dessen was ich sehe nicht zu sagen, wenn du das in eine eigene PRG auslagern kannst mit cmd die es compiliert, kann ich mir das Verhalten mal genauer ansehen.
Im einfachen TEST.PRG sieht man, wie die Vorschau auf tatsächliche Seiten begrenzt wird, das beschleunigt die Vorschau-Ausgabe:
Ich nutze nie private !
Weiterhin wird im Dokument oft eine direkte 1/10mm Angabe geschrieben, das ist mit der Zeit unübersichtlich.
Entweder es sind fixe Werte, dann setze ich #define ein oder ich erweitere (wie du teilweise auch) die Class um exported Membervars.
Code: Alles auswählen
CLASS LiefPrinter from HBPrinter
EXPORTED:
METHOD Print // Alle variablen Druckausgaben werden hier definiert, wenn nötig wird ein
// Seitenwechsel durchgefhrt, der Seitenzähler erhäht und ::PrintForm() aufgerufen.
METHOD PrintForm // Alle fixen Bestandteile einer Seite, egal ob unten oder oben werden hier definiert,
// hier wird KEIN Seitenumbruch aufgerufen, denn der könnte unnötig sein (1.Seite).
// Never call ::NewPage() inside.
METHOD PrintInhalt // konstanten Inhalt der 5 Kopien der variablen Anteile von Print
VAR nDokument // wenn mehre (in unserem Fall maximal 5) in einem Druckjob sind, muss man sie sich merken
VAR nFormularArt // hier wird in Print() "0=alle5",1="Kunde",2=Spedi,3=Kommi,4=Lager,5=Dispo" eingetragen
// und PrintForm() reagiert mit Titel und Farbe
VAR cFormularFarbe // als Farbwert vor dem Aufruf von PrintKopf() oder als Array wenn FormularArt als Index dient.1=weiss,2=grau,3=rot,4=gelb,5=blau
VAR acFormularTitel // { "Exemplar fr Kunde", "Exemplar fr Spedition","Exemplar fr Kommission","Exemplar fr Lager","Exemplar fr Disposition"]
// => ::FormularTitel[::FormularArt] => "Exemplar fr Kunde" bei ArrayPlatz[1]
VAR nSeiteImDokument // bei mehreren gleichen Exemplaren in einem Druckjob, passt der eingebaute Seitenz„hler nicht mehr, selbst verwalten !
Beim Drucken wird alles neu ausgegeben, somit dürfte es keine Wechselwirkungen geben, aber die Private könnten da irgendwie noch anders besetzt sein !
Was ich sicher sagen kann ist, dass wenn wirklich 2 Barcodes mit unterschiedlichen EAN Nummern übereinander gedruckt werden würden, dann müssten die Linien der Barcodes sich von den anderen ausdrucken unterscheiden, denn die Linien des Barcodes sind ja die codierte Nummer. Die 6. Seite sollte nur dann einen Inhalt anzeigen, wenn PRINT auch diese ausgibt.
Wenn die Linien der Barcodes nicht unterschiedlich sind, muss der eine unterschiedliche Buchstabe von einer andern Druckausgabe kommen, ich weiß jetzt nicht welche 1/10 mm Angabe diese Zeile des Barcodes hat, aber mit Messen und nachsehen sollte man das finden.
Meine Klassen drucken nicht von sich aus Inhalte doppelt, würden sie das tun, müsste das immer vorkommen.
Eine Wechselwirkung mit private vars kann ich aber auch nicht ausschließen, daher verwende ich diese nicht.
Beispiel für meine #defines:
#define nLogoX 200
#define nLogoY 2700 // ausgerechnet aus Seitenhöhe-Bildhöhe ...
#define nAdressY ....
#define nLinkerRand 250
der Nachteil von #defines ist, dass diese nicht im Programm dynamisch berechnet werden können (z.B. Oberer Rand - tatsächliche Bildhöhe des Logos)
daher bin ich großzügig mit member vars für solche Angaben.
Egal wie man es macht, wenn man so alle fixen Punkte an einer Stelle definiert hat, fällt einem leichter auf, dass sich da was überschneiden könnte.
Die dynamischen Zeilen z.B. durch größere Elemente in einen fixen Druckbereich rutschen.
Mehr ist anhand dessen was ich sehe nicht zu sagen, wenn du das in eine eigene PRG auslagern kannst mit cmd die es compiliert, kann ich mir das Verhalten mal genauer ansehen.
Im einfachen TEST.PRG sieht man, wie die Vorschau auf tatsächliche Seiten begrenzt wird, das beschleunigt die Vorschau-Ausgabe:
Code: Alles auswählen
if ::IsAfterLastPage() // Ist Shortcut möglich ? (spart Zeit, wichtig für Vorschau !)
exit // is shortcut possible ? (saves time. Preview needs this ! )
endif
Gruß
Hubert
Hubert
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Re: Probleme mit Barcode Druck von HBPrint
Hallo Hubert,
aufgrund deiner Hinweise habe ich folgendes im beiligende Code geändert:
1. keine public-Variablen mehr verwendet
2. den Barcode für jedes Exemplar an eine andere Stelle auf derselben Zeile gedruckt
3. in die Schleife(n) die, von Dir vorgeschlagenen 3 Zeilen eingebaut
if ::IsAfterLastPage() // Ist Shortcut möglich ? (spart Zeit, wichtig für Vorschau !)
exit // is shortcut possible ? (saves time. Preview needs this ! )
endif
4. alle möglichen Druckzeilen auf ein Minimum reduziert, so dass auf keinen Fall ein "Überdrucken" der Barcodes vorkommt
Mit diesem Rumpf-Code habe ich nun die 5 Exemplare des Lieferscheins angezeigt und gedruckt und im Druckdialog (bei Anzeige aller 5 Exemplare) die Seite 2 extra gedruckt.
Die Ergebnisse habe ich als PDF-Files beigelegt.
Das Drucken eines kompletten Exemplar-Satzes funktioniert ohne Problem - jeder Barcode des zugehörigen Exemplars wird an seinem Platz gedruckt.
Bei der Druck-Vorschau wird nicht auf jeder Seite nur ein Barcode augegeben, so wie beim korrekten Druckoutput, und wenn nur eine Seite ausgewählt wird zum Drucken, ist auch mehr als 1 Barcode drauf .
Mir erscheint es so, als ob es zwischen Druckvorschau oder Einzelseitendruck und Barcode-Ausgabe eine Konflikt gibt, den ich nicht beeinflussen kann.
Noch zu deinem Hinweis:
Da ich offensichtlich keine 3 PDF Dateien anhängen kann, hänge ich an eine weiter Anwort die korrekte Druckausgabe.
Vielen Dank für die Hilfe beim Fehlersuchen.
aufgrund deiner Hinweise habe ich folgendes im beiligende Code geändert:
1. keine public-Variablen mehr verwendet
2. den Barcode für jedes Exemplar an eine andere Stelle auf derselben Zeile gedruckt
3. in die Schleife(n) die, von Dir vorgeschlagenen 3 Zeilen eingebaut
if ::IsAfterLastPage() // Ist Shortcut möglich ? (spart Zeit, wichtig für Vorschau !)
exit // is shortcut possible ? (saves time. Preview needs this ! )
endif
4. alle möglichen Druckzeilen auf ein Minimum reduziert, so dass auf keinen Fall ein "Überdrucken" der Barcodes vorkommt
Mit diesem Rumpf-Code habe ich nun die 5 Exemplare des Lieferscheins angezeigt und gedruckt und im Druckdialog (bei Anzeige aller 5 Exemplare) die Seite 2 extra gedruckt.
Die Ergebnisse habe ich als PDF-Files beigelegt.
Das Drucken eines kompletten Exemplar-Satzes funktioniert ohne Problem - jeder Barcode des zugehörigen Exemplars wird an seinem Platz gedruckt.
Bei der Druck-Vorschau wird nicht auf jeder Seite nur ein Barcode augegeben, so wie beim korrekten Druckoutput, und wenn nur eine Seite ausgewählt wird zum Drucken, ist auch mehr als 1 Barcode drauf .
Mir erscheint es so, als ob es zwischen Druckvorschau oder Einzelseitendruck und Barcode-Ausgabe eine Konflikt gibt, den ich nicht beeinflussen kann.
Noch zu deinem Hinweis:
Bei meinem ersten Beispiel(Barcode_Druckerfehler.docx) sieht man deutlich, dass die Linien über der Exemplarnummer und der Prüfziffer unterschiedlich sind was für mich der Hinweis war, dass die Barcodes übereinandergerdruckt wurden, denn alle andern Ziffern/Linien waren ja identisch und korrekt.Was ich sicher sagen kann ist, dass wenn wirklich 2 Barcodes mit unterschiedlichen EAN Nummern übereinander gedruckt werden würden, dann müssten die Linien der Barcodes sich von den anderen ausdrucken unterscheiden, denn die Linien des Barcodes sind ja die codierte Nummer.
Da ich offensichtlich keine 3 PDF Dateien anhängen kann, hänge ich an eine weiter Anwort die korrekte Druckausgabe.
Vielen Dank für die Hilfe beim Fehlersuchen.
Code: Alles auswählen
/* erstellt 24.1.2015 hje
Drucken des Lieferscheins aus Vorlage RechWDru -> HBPrint im GUI/Grafikmodus
Spezialitaet: "Komplett" = 5 Kopien (identischer Inhalt) mit 4 Exemplaren mit
bunten Streifen am rechten Rand und alle mit einer "Empf„ngerzeile" unter dem Logo
Parameter: Lieferschein-Nummer / Formular(nummer) (0=alle5,1=Kunde,2=Spedi,3=Kommi,4=Lager,5=Dispo, 7=1+2+4)
Verwendung von HB_Print Class Spezialit„t - eigene Methode PrintInhalt definiert um denselben Liefer-
schein 5 mal mit Formularfarbe und Exemplar fr,,, zu drucken.
----------------------------------------------------------------------
Last change: HJE 11.08.2021 18:13:21
*/
#include "Gra.ch"
#include "Xbp.ch"
#include "Common.ch"
#include "Appevent.ch"
#include "Font.ch"
#include "xbpdev.ch"
procedure LiefWDru(cLiefersNr,nFormular)
local oHBPrinter
oHBPrinter := LiefPrinter():New():create()
oHBPrinter:n1TextZeile := 740 && Zeile 11
oHBPrinter:n2TextZeile := 740 && Zeile 11
if oHBPrinter:IsPrinterError() // Fehler verhindern, avoid errors
cls
*N_meldung(2,"Standarddrucker ist nicht verfgbar !")
ErrBox("Standarddrucker ist nicht verfgbar !","Druckerfehler")
?
? "Status: ",oHBPrinter:printerStatus(),"=",cPrinterStatus(oHBPrinter:printerStatus())
?
wait
else
*---------------- Fonts nur einmal erzeugen - create fonts only once ------
#define HB_FONT_7Arial 1
#define HB_FONT_8Arial 2
#define HB_FONT_14Arial 3
#define HB_FONT_10Arial 4
#define HB_FONT_12Arial 5
#define HB_FONT_12Arialfett 6
#define HB_FONT_20Arial 7
oHBPrinter:addFont("7.Arial")
oHBPrinter:addFont("8.Arial")
oHBPrinter:addFont("14.Arial")
oHBPrinter:addFont("10.Arial")
oHBPrinter:addFont("12.Arial")
oHBPrinter:addFont({"Arial",12,.t.,.f.})
oHBPrinter:addFont({"Arial",20,.f.,.f.})
oHBPrinter:nDokument := nFormular && kommt als šbergabeparameter 0-5
oHBPrinter:acFormularTitel := { "Exemplar fr Kunde", "Exemplar fr Spedition","Exemplar fr Kommission","Exemplar fr Lager","Exemplar fr Disposition" }
oHBPrinter:nSeiteImDokument := 1 && muss extra verwaltet werden da 5 Dokumente geduckt werden
oHBPrinter:PrintingDialog( .t. ,; // ESC -> close
.t. ,; // ALT+Enter and Enter will Print
xbeK_ALT_P) // ALT+P will print
endif
if select("Lieftext") > 0
close Lieftext
endif
if select("RechPos") > 0
close RechPos
endif
if select("ArtStamm") > 0
close ArtStamm
endif
return
* Lieferscheindruckprogramm beendet
*-----------------------------------------------------------------------------------------------------
CLASS LiefPrinter from HBPrinter
EXPORTED:
METHOD Print // Alle variablen Druckausgaben werden hier definiert, wenn n”tig wird ein
// Seitenwechsel durchgefhrt, der Seitenz„hler erh”ht und ::PrintForm() aufgerufen.
METHOD PrintForm // Alle fixen Bestandteile einer Seite, egal ob unten oder oben werden hier definiert,
// hier wird KEIN Seitenumbruch aufgerufen, denn der k”nnte unn”tig sein (1.Seite).
// Never call ::NewPage() inside.
METHOD PrintInhalt // konstanten Inhalt der 5 Kopien der variablen Anteile von Print
VAR nDokument // wenn mehre (in unserem Fall maximal 5) in einem Druckjob sind, muss man sie sich merken
VAR nFormularArt // hier wird in Print() "0=alle5",1="Kunde",2=Spedi,3=Kommi,4=Lager,5=Dispo" eingetragen
// und PrintForm() reagiert mit Titel und Farbe
VAR cFormularFarbe // als Farbwert vor dem Aufruf von PrintKopf() oder als Array wenn FormularArt als Index dient.1=weiss,2=grau,3=rot,4=gelb,5=blau
VAR acFormularTitel // { "Exemplar fr Kunde", "Exemplar fr Spedition","Exemplar fr Kommission","Exemplar fr Lager","Exemplar fr Disposition"]
// => ::FormularTitel[::FormularArt] => "Exemplar fr Kunde" bei ArrayPlatz[1]
VAR nSeiteImDokument // bei mehreren gleichen Exemplaren in einem Druckjob, passt der eingebaute Seitenz„hler nicht mehr, selbst verwalten !
VAR n1TextZeile && StartzeileZeile
VAR n2TextZeile && StartzeileZeile
ENDCLASS
*-------------------------------------------------------------
* die folgenden Methoden anpassen - folowing methods has to be modified
*-------------------------------------------------------------
METHOD LiefPrinter:PrintForm() // Alle fixen Bestandteile einer Seite, egal ob unten oder oben werden hier definiert,
// hier wird KEIN Seitenumbruch aufgerufen, denn der k”nnte unn”tig sein (1.Seite).
// Never call ::NewPage() inside.
local altFont, cText,cAusgabeTxt ,at_pseudo
local nSelectMerk := 0 // um zum Kundenstamm wechseln zu k”nnen wegen Verarbeiter-Suche
local aAttribAlt // Array um Farbattribute zu merken
local nFormularNrMerk := 0
local nSpalte := 1640
altFont := ::SetFont(HB_FONT_10Arial)
::SetFont(HB_FONT_10Arial) && ca 52 Zeilen/Seite
do case
case ::nSeiteImDokument = 1
* zur Kontrolle
::PrintText( 1992,446+::LineFeed(), ",str(::nFormularArt,1): "+str(::nFormularArt,1),"R") // Exemplar/Formular
cAusgabeTxt := "Unser Zeichen: " // Unser zeichen
::PrintText( 1992,593, cAusgabeTxt,"R") // Unser zeichen auf Zeile 8 Drucken
::n1TextZeile := 787 && Zeile 12
*mehrerer Printtext-Ausgaben
::n1TextZeile := ::n1TextZeile +::LineFeed(2) && um Abstand herzustellen
::n2TextZeile := ::n1TextZeile
*Barcode jetzt alle nebeneinander /nich an derselben Steee drucken/ausgeben
do case
case ::nFormularArt = 1
::PrintBarCodeEan13(nSpalte,::n2TextZeile+20,make_LS_EAN13(lieftext->liefersnr,str(::nFormularArt,1))) && barcode drucken
case ::nFormularArt = 2
nSpalte := nSpalte- 360
::PrintBarCodeEan13(nSpalte,::n2TextZeile+20,make_LS_EAN13(lieftext->liefersnr,str(::nFormularArt,1))) && barcode drucken
case ::nFormularArt = 3
nSpalte := nSpalte- 720
::PrintBarCodeEan13(nSpalte,::n2TextZeile+20,make_LS_EAN13(lieftext->liefersnr,str(::nFormularArt,1))) && barcode drucken
case ::nFormularArt = 4
nSpalte := nSpalte- 1080
::PrintBarCodeEan13(nSpalte,::n2TextZeile+20,make_LS_EAN13(lieftext->liefersnr,str(::nFormularArt,1))) && barcode drucken
case ::nFormularArt = 5
nSpalte := nSpalte- 1440
::PrintBarCodeEan13(nSpalte,::n2TextZeile+20,make_LS_EAN13(lieftext->liefersnr,str(::nFormularArt,1))) && barcode drucken
otherwise
endcase
otherwise
::n2TextZeile := 544 && zeile 7
endcase
* Formularexemplar(fr wen) direkt unter Logo HB_FONT_12Arialfett
* 1892 als rechten Rand gew„hlt um bndig mit Aussenrand Logo zu sein
cAusgabeTxt := ::acFormularTitel[::nFormularArt] // Welches der 5 Exemplare wird gerade gedruckt = oHBPrinter:nFormularArt
::SetFont(HB_FONT_12Arialfett) && groáe Schrift
::PrintText( 1992,446, cAusgabeTxt,"R") // Exemplarempf„nger auf Zeile 5 Drucken (20.4.2020 von 6 auf 5)
::n2TextZeile := ::n2TextZeile + ::LineFeed(2) && 1 Zeilen
::SetFont(HB_FONT_20Arial) && groáe Schrift
::PrintText(200,::n2TextZeile, "LIEFERSCHEIN Nr. "+ltrim(lieftext->liefersnr) ) // Text fr alle Seiten - text for all pages
::SetFont(HB_FONT_10Arial) && zurck auf Normalschrift
::PrintTextAlltrim := .t. // fhrende Blanks NICHT mit drucken !
::n2TextZeile := ::n2TextZeile + ::LineFeed() && 1 Zeilen
::n1TextZeile := ::n2TextZeile
::SetFont(HB_FONT_7Arial)
cText := "4 zeiliger text"
::PrintMemo( 200, 2747 , cText, "L",,,,,2936) // Fusszeile ab Zeile 51
//::PrintMemo( nPosX, nPosY, cTxt, cAusrichtung, nMaxLen, cArt, nFarbe, cHochQuer, nMaxBis,nLineFeed )
::SetFont(altFont)
return self
*-------------------------------------------------------------
METHOD LiefPrinter:Print() // Alle variablen Druckausgaben werden hier definiert, wenn n”tig wird ein
// Seitenwechsel durchgefhrt, der Seitenz„hler erh”ht und ::PrintForm() aufgerufen.
local nPosY, i
* Versuch Seitennummer 1 nicht setzen (auf default vertrauen) (dann wird nur Seite 2 ohne 1 in Vorschau angezeigt)
::nPageNo := 1
::lFirstPageForm := .f. // Formular 1. Seite noch nicht gedruckt - form 1. page not printed
::SetFont(HB_FONT_10Arial)
if str(::nDokument,1,0) $ "12345" && Einzelformuladruck nur 1-5 zul„ssig (nicht bei 0 und 7und 8)
// nur gewnschtes Exemplar-Nr (1-5) drucken
::nFormularArt := ::nDokument && kommt als šbergabeparameter 1-5
::nSeiteImDokument := ::nPageNo
::PrintInhalt()
endif
if ::nDokument = 0 && alle 5 Exempare nacheinader ausgeben
for i = 1 to 5
* Formular Druckreihenfolge 3 1 2 4 5
* ::nFormularArt := i
do case
case i = 1
::nFormularArt := 3
nPosY := ::nFirstLine
::nSeiteImDokument := ::nPageNo
*::NewPage()
::PrintInhalt()
case i = 2
::nFormularArt := 1
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
case i = 3
::nFormularArt := 2
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
case i = 4
::nFormularArt := i
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
case i = 5
::nFormularArt := i
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
endcase
if ::IsAfterLastPage() // Ist Shortcut m”glich ? (spart Zeit, wichtig fr Vorschau !)
exit
endif
next
endif
if ::nDokument = 7 && nur FormularArt 1 + 2 + 4 ausgeben
for i = 1 to 3
do case
case i = 1
::nFormularArt := i
nPosY := ::nFirstLine
::nSeiteImDokument := ::nPageNo
*::NewPage()
::PrintInhalt()
case i = 2
::nFormularArt := i
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
case i = 3
::nFormularArt := 4
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
endcase
if ::IsAfterLastPage() // Ist Shortcut m”glich ? (spart Zeit, wichtig fr Vorschau !)
exit
endif
next
endif
if ::nDokument = 8 && nur Formular 1 + 2 + 4 +5 ausgeben (18.7.17 eingefhrt)
for i = 1 to 4
do case
case i = 1
::nFormularArt := i
nPosY := ::nFirstLine
::nSeiteImDokument := ::nPageNo
*::NewPage()
::PrintInhalt()
case i = 2
::nFormularArt := i
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
case i = 3
::nFormularArt := 4
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
case i = 4
::nFormularArt := 5
::nSeiteImDokument := 1
::NewPage()
::PrintInhalt()
endcase
if ::IsAfterLastPage() // Ist Shortcut m”glich ? (spart Zeit, wichtig fr Vorschau !)
exit
endif
next
endif
return self
*-------------------------------------------------------------
* die folgenden Methoden anpassen - folowing methods has to be modified
*-------------------------------------------------------------
METHOD LiefPrinter:PrintInhalt() // Alle variablen Inhalte pro Lieferschein - die aber konstant pro Kopie bleiben,
local PosX, PosY
local cAusgabeTxt := ""
local PosXMenge := (387+60) && spalten merken frs drucken rechtsbndig (alle +60 nach rechts-29.1.15)
local PosXMeh := (407+60) && spalten merken frs drucken
::PrintForm()
PosX := 200 && linker Rand erste Printposition
do case
case ::nSeiteImDokument = 1
::nFirstLine := ::n1TextZeile
otherwise
::nFirstLine := ::n2TextZeile
endcase
PosY := ::nFirstLine && erst jetzt ist PosY richtig besetzt (HB)
select RechPos
set relation to RechPos->artnummer into artstamm
seek LIEFTEXT->LIEFERSNR && Positionsendatei steht auf erster Position
do while RechPos->LIEFERSNR = LIEFTEXT->LIEFERSNR .and. .not. eof()
if (PosY+::LineFeed(5)) >= 2748 .or. PosY < 0 // Passen 5 Zeilen(=1 Position noch hin oder ist voll (Zeile 51=2700 =Unterkante Zeile 51)
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(1992, 2700 ,"Fortsetzung ->","R") // Zeile 51
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
if ::IsAfterLastPage() // Ist Shortcut m”glich ? (spart Zeit, wichtig fr Vorschau !)
exit
endif
PosX := 200
PosY := ::n2TextZeile
endif
::PrintText( PosX+60, PosY ,RechPos->LIEFPOSNR,"R",60)
::PrintText( PosXMenge, PosY ,Transform(RechPos->LIEFMENGE,"@E 99,999.99"),"R",210)
do case
case RechPos->MERECH = "QM "
::PrintText( PosXMeh, PosY ,"mý ")
case RechPos->MERECH = "M "
::PrintText( PosXMeh, PosY ,"m ")
case RechPos->MERECH = "CBM"
::PrintText( PosXMeh, PosY ,"CBM") // noch fr hoch 3 suchen
case RechPos->MERECH = "ST "
::PrintText( PosXMeh, PosY ,"St.")
case RechPos->MERECH = "L "
::PrintText( PosXMeh, PosY ,"l ")
otherwise
::PrintText( PosXMeh, PosY ,RechPos->merech)
endcase
::PrintText(PosXMeh+100, PosY ,"™Norm/DIN")
skip+1
PosY += ::LineFeed() && Zeilenvorschub
PosX := 200 && Startwert linker Rand
if ::IsAfterLastPage() // Ist Shortcut m”glich ? (spart Zeit, wichtig fr Vorschau !)
exit
endif
enddo
if (PosY+::LineFeed(10)) >= 2728 .or. PosY < 0 // Passen 9 Zeilen noch hin oder ist voll (Zeile 59=2727 =Unterkante Zeile 59)
PosY += ::LineFeed() && Zeilenvorschub
::PrintText(PosXArtNummer, PosY ,"F O R T S E T Z U N G -->")
::nSeiteImDokument := ::nSeiteImDokument + 1
::NewPage()
::PrintForm()
PosX := 200
PosY := ::n2TextZeile
endif
PosX := 200 && linken Rand wieder auf 200 setzen
PosY += ::LineFeed(2) && Zeilenvorschub 2 zeilen(damit 1 Leerzeile ensteht)
// --- Einmalige Lieferschein Fusstexte
::PrintText(PosX, PosY , "Transport .")
PosY += ::LineFeed(2) && Zeilenvorschub
::PrintText(PosX, PosY , "_____________________________")
return self
*---------------------------------------------------------------------------------------
/*
Name : Make_LS_EAN13(Lieftext->Liefersnr,cExemplar)
Does : generiert aus der Lieferscheinnummer und dem Exemplar einen 13stelligen EANCode
Parameters : Lieferscheinnummer(mit fhrenden 0) und Exemplar beide caracter
Returns : EAN-Code fr das jeweilie Lieferscheinexemplar
Notes : Konzeptionell setzt sich der EAN fr Lieferscheine folgendermassen zusammen:
- Stelle 1 = "2" ->Festlegung fr "private" EAN13-Numern
- Stelle 2-4 = "230" ->Dokumentenschlssel
- Stelle 5 = "1"-"5" ->fr die Subkategorie der Lieferscheine
- Stelle 6 = "0" ->aktuell nicht benutzt
- Stelle 7-12 = 6-stellige Lieferscheinnummer mit fhrender 0
- Stelle 13 ="?" ->Werte 0-9 ist die Prfziffer fr EAN13
Author : hje
Date Created : 17.04.2021
Time Created : 19:17
*/
FUNCTION Make_LS_EAN13(cLiefSNr,cExemplar)
local cEan13Nr := ""
local cEan12 := "2230"+cExemplar+"0"+strZero(val(cLiefSNr),6,0)
* Zusammensetzen
cEan13Nr := cEan12+GraBarcodeEAN13_CalcCheckDigit(cEan12)
RETURN (cEan13Nr)
*---------------------------------------------------------------------------------------
* eof LiefWDru
- Dateianhänge
-
- Barcode_LS_Seite_2_von5Formularen.pdf
- (170.5 KiB) 166-mal heruntergeladen
-
- Vorschau_Harcopy_Seite1bis6.pdf
- (314.91 KiB) 159-mal heruntergeladen
Gruß
Schorsch
Schorsch
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Re: Probleme mit Barcode Druck von HBPrint
Hallo,
hier noch die Barcode-Druckausgabe, wie sie korrekt ist.
hier noch die Barcode-Druckausgabe, wie sie korrekt ist.
- Dateianhänge
-
- Drucken_auf_PDFDrucker_Seiten_alle.pdf
- (181.45 KiB) 163-mal heruntergeladen
Gruß
Schorsch
Schorsch
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2518
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Probleme mit Barcode Druck von HBPrint
Hallo Schorsch
ich würde mal prüfen ob in deiner Methode ::PrintBarCodeEan13() der verwendete PS nach der Ausgabe gelöscht wird.
Oder ob du immer im selben PS schreibst was dann zu den erwähnten Doppel führen könnte .......
ich würde mal prüfen ob in deiner Methode ::PrintBarCodeEan13() der verwendete PS nach der Ausgabe gelöscht wird.
Oder ob du immer im selben PS schreibst was dann zu den erwähnten Doppel führen könnte .......
Valar Morghulis
Gruss Carlo
Gruss Carlo
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Probleme mit Barcode Druck von HBPrint
das ist eine Idee ....
Ich muss das mal untersuchen. Was du machen kannst ist Bitmaps zu erzeugen und diese zu drucken.
Ich muss das mal untersuchen. Was du machen kannst ist Bitmaps zu erzeugen und diese zu drucken.
Gruß
Hubert
Hubert
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Re: Probleme mit Barcode Druck von HBPrint
Hallo Carlo,
leider durchschaue ich die PS-Nutzung des Print-Dialogs (Preview) und der Barcode-Ausgabe nicht.
Hallo Hubert,
ich habe deinen Hinwis mit dem Bild-drucken gleich mal probiert und statt der Barcodes 1-4 Bilder genommen und nur den 5ten Barcode gelassen
mit folgendem Ergebnis:
Die Druckvorschu für die Seiten 1-3 war ok, auf Seite 4 war der Barcode5 und das Bild4 gleichzeitig zu sehen, auf Seite 5 nur der Barcode5 und
auf Seite 6 ebenfalls Barcode5.
Der Ausdruck der Seite 4 auf den PDF-Drucker ist identisch mit der Druckvorschau der Seite 4.
Ich habe die 2 Files hier angehängt.
Wenn das die Lösung ist, bräuchte ich noch den Hinweis, wie ich den jeweiligen Barcode in eine JPG oder BMP Datei speichern kann um ihn danach zu drucken.
Vielen Dank bis dahin.
leider durchschaue ich die PS-Nutzung des Print-Dialogs (Preview) und der Barcode-Ausgabe nicht.
Hallo Hubert,
ich habe deinen Hinwis mit dem Bild-drucken gleich mal probiert und statt der Barcodes 1-4 Bilder genommen und nur den 5ten Barcode gelassen
mit folgendem Ergebnis:
Die Druckvorschu für die Seiten 1-3 war ok, auf Seite 4 war der Barcode5 und das Bild4 gleichzeitig zu sehen, auf Seite 5 nur der Barcode5 und
auf Seite 6 ebenfalls Barcode5.
Der Ausdruck der Seite 4 auf den PDF-Drucker ist identisch mit der Druckvorschau der Seite 4.
Ich habe die 2 Files hier angehängt.
Wenn das die Lösung ist, bräuchte ich noch den Hinweis, wie ich den jeweiligen Barcode in eine JPG oder BMP Datei speichern kann um ihn danach zu drucken.
Vielen Dank bis dahin.
- Dateianhänge
-
- Vorschau_Harcopy_Seite1bis6_mit_Bildern.pdf
- (279.66 KiB) 170-mal heruntergeladen
-
- LS_Seite4_PDFDrucker.pdf
- (175.24 KiB) 173-mal heruntergeladen
Gruß
Schorsch
Schorsch
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Probleme mit Barcode Druck von HBPrint
Ich muss deinen Quellcode - nur für die Druckausgabe - zum Testen haben,
ähnlich wie ich die Test.prg gemacht habe wäre es schön wenn du ein kleines Beispiel mit belanglosem Textinhalt aber deinen Nummern im Barcode senden könntest (per eMail)
es kann aber dauern, ich hab viel zu tun und die Hitze ist aktuell ein echtes Problem.
ähnlich wie ich die Test.prg gemacht habe wäre es schön wenn du ein kleines Beispiel mit belanglosem Textinhalt aber deinen Nummern im Barcode senden könntest (per eMail)
es kann aber dauern, ich hab viel zu tun und die Hitze ist aktuell ein echtes Problem.
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Probleme mit Barcode Druck von HBPrint
Ich habe die Datei durchgesehen, und was gefunden ...
Der Druck stimmt
EDIT: solange man immer alle Seiten druckt (die Methode dient dem Überspringen von nicht zu druckenden Seiten)
die Vorschau nicht, hier sammeln sich alle Barcodes ... der Fehler liegt bei mir.
Ich nutzt für Druck und Vorschau die gleiche Methode, beim Drucken wird das einmal durchlaufen und gut ist.
Bei der Vorschau, muss ich aber für jede Seite dennoch von Anfang an durchlaufen und mit ::IsPageToPrint() intern
die Ausgabe unterdrücken, wenn die Seite übersprungen werden soll.
Als ich die Barcode Methode eingebaut habe, muss ich damals vergessen haben das auch zu berücksichtigen.
Vorab hänge ich mal eine verbesserte HBPRINT-PRG an, aber ich fürchte es fehlt an ein paar weiteren Stellen
Ich rate aber dringend dazu, zuerst die Daten die gedruckt werden sollen zu ermitteln, z.B. im Array oder DataObjects().
Diese Daten im RAM dann der Druckroutine übergeben, sonst muss für den Ausdruck und jede Vorschauseite wieder auf die Felder zugegriffen werden.
Wenn man das sauber trennt, ist auch die Umstellung der Druckausgabe viel einfacher.
PS: ich habe mir erlaubt einige off topic Beiträge zu löschen, damit die Übersicht verbessert wird. Ich hoffe auf Verständnis
Der Druck stimmt
EDIT: solange man immer alle Seiten druckt (die Methode dient dem Überspringen von nicht zu druckenden Seiten)
die Vorschau nicht, hier sammeln sich alle Barcodes ... der Fehler liegt bei mir.
Ich nutzt für Druck und Vorschau die gleiche Methode, beim Drucken wird das einmal durchlaufen und gut ist.
Bei der Vorschau, muss ich aber für jede Seite dennoch von Anfang an durchlaufen und mit ::IsPageToPrint() intern
die Ausgabe unterdrücken, wenn die Seite übersprungen werden soll.
Als ich die Barcode Methode eingebaut habe, muss ich damals vergessen haben das auch zu berücksichtigen.
Vorab hänge ich mal eine verbesserte HBPRINT-PRG an, aber ich fürchte es fehlt an ein paar weiteren Stellen
Ich rate aber dringend dazu, zuerst die Daten die gedruckt werden sollen zu ermitteln, z.B. im Array oder DataObjects().
Diese Daten im RAM dann der Druckroutine übergeben, sonst muss für den Ausdruck und jede Vorschauseite wieder auf die Felder zugegriffen werden.
Wenn man das sauber trennt, ist auch die Umstellung der Druckausgabe viel einfacher.
PS: ich habe mir erlaubt einige off topic Beiträge zu löschen, damit die Übersicht verbessert wird. Ich hoffe auf Verständnis
- Dateianhänge
-
- HBPRINT.PRG
- Das ist die ANSI Version
- (130.9 KiB) 170-mal heruntergeladen
Gruß
Hubert
Hubert
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Re: Probleme mit Barcode Druck von HBPrint
Hallo Hubert,
deine Änderung hat sowohl im Testprogramm als auch im Original super fuktioniert. Ich habe keine Probleme mehr festgestellt.
Ich danke für die schnelle und effiziente Hilfe.
Ein Frage hätte ich noch:
Du hast die ANSI Version geschickt - was ist denn der genaue Unterschied zwischen OEM und ANSI Version ? Sind es nur die Umlaute in den Kommentaren oder hat es im Code auch Auswirkungen ?
Insgesamt habe ich bei der Aktion auch wieder dazugelernt.
Ich gehe davon aus, dass es irgenwann auch mal eine neue Version deiner Klasse geben wird - bis dahin viel Spaß noch.
Mir macht die Hitze auch etwas zu schaffen, aber ich suche kühle Räume auf und versuche keine Klimaanlage zu verwenden - auch wenn ich den Strom dafür seit 20 Jahren mit meiner, inzwischen 2ten, PV-Anlage erzeuge.
deine Änderung hat sowohl im Testprogramm als auch im Original super fuktioniert. Ich habe keine Probleme mehr festgestellt.
Ich danke für die schnelle und effiziente Hilfe.
Ein Frage hätte ich noch:
Du hast die ANSI Version geschickt - was ist denn der genaue Unterschied zwischen OEM und ANSI Version ? Sind es nur die Umlaute in den Kommentaren oder hat es im Code auch Auswirkungen ?
Insgesamt habe ich bei der Aktion auch wieder dazugelernt.
Ich gehe davon aus, dass es irgenwann auch mal eine neue Version deiner Klasse geben wird - bis dahin viel Spaß noch.
Mir macht die Hitze auch etwas zu schaffen, aber ich suche kühle Räume auf und versuche keine Klimaanlage zu verwenden - auch wenn ich den Strom dafür seit 20 Jahren mit meiner, inzwischen 2ten, PV-Anlage erzeuge.
Gruß
Schorsch
Schorsch
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: Probleme mit Barcode Druck von HBPrint
Eventuelle Fehlermeldungen, aber ich glaube nur die Texte in HBPRINTD sind wirklich von der Version abhängig, das wollte ich eh mal anpassen ... es geht ja auch anders.
- Dateianhänge
-
- HBPRINT.PRG
- Das ist die OEM Version
- (130.87 KiB) 185-mal heruntergeladen
Gruß
Hubert
Hubert
- Schorsch
- Cut&Paste-Entwickler
- Beiträge: 45
- Registriert: So, 21. Sep 2008 19:21
- Wohnort: Sinsheim im Kraichgau
Re: Probleme mit Barcode Druck von HBPrint
Hallo Hubert,
nochmals vielen Dank.
Du kannst sicher als Moderator das "Problem" auf [erledigt] setzen, denn das ist es nach meiner Meinung.
nochmals vielen Dank.
Du kannst sicher als Moderator das "Problem" auf [erledigt] setzen, denn das ist es nach meiner Meinung.
Gruß
Schorsch
Schorsch
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2945
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 14 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Probleme mit Barcode Druck von HBPrint
Kannst du selbst, indem du den Betreff deines ersten Beitrags editierst.Du kannst sicher als Moderator das "Problem" auf [erledigt] setzen, denn das ist es nach meiner Meinung.
Viele Grüße
Wolfgang
Wolfgang