Clipper Druckereinstellungen

Still in use?

Moderator: Moderatoren

Antworten
Zorus
Rookie
Rookie
Beiträge: 1
Registriert: Mi, 26. Mai 2021 15:16

Clipper Druckereinstellungen

Beitrag von Zorus »

Guten Tag,

Ich habe bei uns im Labor noch einen Computer stehen, auf dem eine Software basierend auf Clipper läuft. Ein Teil des Programms ist für den Druck von Etiketten für die Laborproben zuständig. Da sich bei den Etiketten das Format ändern wird, soll ich mir die Software anschauen und die passenden Änderungen vornehmen. Ich bin selber kein Programmierer und der Erschaffer unserer Software ist auch schon lange weg. Ich habe den fraglichen Teil im Code gefunden, blicke aber nicht zu 100% durch, welche Variable für was steht und was macht etc. Vielleicht kann mir ja hier jemand weiterhelfen, das wäre wunderbar!
Aktuell werden die Etiketten in drei Spalten gedruckt, jede Nummer wird immer doppelt vergeben.
Beispiel:

ITMC ITMC ITMC
10000 10000 10001

ITMC ITMC ITMC
10001 10002 10002
etc.

Ich wüsste gerne, an welchen Stellschrauben ich drehen muss, um den Abstand und die Anzahl der Spalten zu verändern, je nach Anforderung der neuen Etiketten.

Vielen Dank schonmal!

Hier ist der Ausschnitt aus dem Code:

procedure nummernet
private fensalt,fensneu
*set intensity off
set delimiters to "[]"
set delimiters on
fensalt=wselect()
fensneu=wopen(12,20,20,60,.T.)
wbox()
@ 0,8 say "Etikettendruck:"
@ 1,0 say replicate("-",38)
@ 3,1 say "Startnummer "
@ 3,22 say "Wieviel "
@ 5,5 say "<P>robeausdruck <A>usdruck"
do while .T.
num1=0
num3=0
@ 3,13 get num1 picture("#####")
@ 3,30 get num3 picture("####")
read
if empty(num1) .or. empty(num3)
exit
endif
set color to &atr4
@ 5,6 say "P"
@ 5,22 say "A"
set console off
if .not. printeran(1,72)
exit
endif
set margin to 0
do while .T.
num2=waitkey(0,1)
do case
case num2=112
do probedr
case num2=97
ausdruck(num1,num3)
exit
case num2=27
exit
otherwise
loop
endcase
enddo
if .not. printeran(3,72)
exit
endif
set console on
set color to &atr0
@ 5,6 say "P"
@ 5,22 say "A"
enddo
wclose(fensneu)
wselect(fensalt)
do kopf
return


procedure probedr
? chr(27)+"S1"+" "+chr(27)+"T"
?
? chr(27)+"w1"+str(num1,5,0)+chr(27)+"w0"
?
return

function ausdruck
parameters vonwo,wieviel
num4=0
?? chr(27)+"M"
do while .T.
for num5=1 to 2
? chr(27)+"S1"+" ITMC ITMC ITMC"+chr(27)+"T"
? chr(27)+"G"
? chr(27)+"w1"+str(vonwo+num4,5,0)
?? " "+str(vonwo+num4+1,5,0)
?? " "+str(vonwo+num4+2,5,0)+chr(27)+"w0"
? chr(27)+"H"
next
num4=num4+3
if num4>=wieviel
exit
endif
enddo
return(0)
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: Clipper Druckereinstellungen

Beitrag von AUGE_OHR »

hi,
Zorus hat geschrieben: Mi, 26. Mai 2021 15:29 Guten Tag,
willkomen im Forum
Zorus hat geschrieben: Mi, 26. Mai 2021 15:29 Ich wüsste gerne, an welchen Stellschrauben ich drehen muss, um den Abstand und die Anzahl der Spalten zu verändern, je nach Anforderung der neuen Etiketten.
Cl*pper arbeitet mit "festen" Abständen ( Proportional Schrift ) d.h. man fügt ein "Leerzeichen" dazu
Zorus hat geschrieben: Mi, 26. Mai 2021 15:29

Code: Alles auswählen

function ausdruck
parameters vonwo,wieviel
num4=0
?? chr(27)+"M"
do while .T.
    for num5=1 to 2
       ? chr(27)+"S1"+" ITMC         ITMC         ITMC"+chr(27)+"T"
       ? chr(27)+"G"
       ? chr(27)+"w1"+str(vonwo+num4,5,0)
       ?? "        "+str(vonwo+num4+1,5,0)
       ?? "        "+str(vonwo+num4+2,5,0)+chr(27)+"w0"
       ? chr(27)+"H"
     next
     num4=num4+3
     if num4>=wieviel
        exit
     endif
enddo
return(0)
das sind "Epson" bzw. ESC Sequenzen welche mit CHR(27) anfangen.
da sich diese bei den Drucker unterscheiden können ist die Frage "was" für ein Drucker du hast (genaue Bezeichnung )

wie schon gesagt solltest du "Leerzeichen" für die "Breite" einfügen.
die Anzahl der Spalten ist ( vermutlich ) in "wieviel" angegeben

---

es ist weniger das Problem mit dem Clipper Compiler sondern der (alte) Drucker welcher (noch) ESC-Sequenzen "versteht"
heutzutage würde man Barcode oder ähnliches drucken was Clipper (Grafik-Ausdruk) nicht kann.
Deshalb ist es schwer möglich ein Druck Ergebnis zu verifizieren wenn ich keinen Drucker habe der mir das Ergebnis zeigt

du könntest Xbase++ benutzen aber ob zu einen 4 Stelligen Betrag dafür investieren willst ...
alternative gäbe es harbour welches "free" ist womit man Barcode & Co drucken (auch PDF) kann
https://github.com/HMG-Official/HMG

als Forum würde ich HMG empfehlen
https://www.hmgforum.com
wobei Portugisich oder Spanisch gesprochen wird. (klar geht auch Englisch )

weitere Informationen gerne per privater Email ( bitte mit Photo von den Etiketten )
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Clipper Druckereinstellungen

Beitrag von Tom »

Ergänzend zu Jimmys Ausführungen:

1. In dieser Zeile wird die Kopfzeile gedruckt:

Code: Alles auswählen

? chr(27)+"S1"+" ITMC         ITMC         ITMC"+chr(27)+"T"
Zwischen den Spaltenüberschriften "IMC" stehen jeweils neun Leerzeichen. Wenn man da einfach jeweils welche hinzufügt oder rausnimmt, erhöhen oder verringern sich die Abstände.

2. Hier werden nacheinander die drei Spalten gedruckt:

Code: Alles auswählen

? chr(27)+"w1"+str(vonwo+num4,5,0) // erste Spalte
?? "        "+str(vonwo+num4+1,5,0) // zweite Spalte
?? "        "+str(vonwo+num4+2,5,0)+chr(27)+"w0" // dritte Spalte
Auch hier werden - direkt nach dem Ausgabekommando "??" - neun Leerzeichen vor die zweite und dritte Spalte gesetzt. Siehe oben - man verlängert oder verkürzt schlicht den Leertext zwischen den Anführungszeichen und verändert dadurch die Abstände. Fertig.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Clipper Druckereinstellungen

Beitrag von ramses »

Die Epson Sequenzen bedeuten:

ESC M = 12cpi
ESC S1 = Druck das erste folgende Zeichen mit 2/3 der normalen Höhe
ESC W1 = Drucken in Doppelter Hohe EIN
ESC W0 = Drucken in Doppelter Hohe AUS
ESC G = Drucken mit doppeltem Anschlag EIN
ESC H = Drucken mit doppeltem Anschlag AUS

Die werden noch immer von vielen Druckern benutzt ......
Valar Morghulis

Gruss Carlo
Antworten