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)
Clipper Druckereinstellungen
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Clipper Druckereinstellungen
hi,
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 )
willkomen im Forum
Cl*pper arbeitet mit "festen" Abständen ( Proportional Schrift ) d.h. man fügt ein "Leerzeichen" dazu
das sind "Epson" bzw. ESC Sequenzen welche mit CHR(27) anfangen.Zorus hat geschrieben: ↑Mi, 26. Mai 2021 15:29Code: 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)
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
Jimmy
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9388
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: Clipper Druckereinstellungen
Ergänzend zu Jimmys Ausführungen:
1. In dieser Zeile wird die Kopfzeile gedruckt:
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:
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.
1. In dieser Zeile wird die Kopfzeile gedruckt:
Code: Alles auswählen
? chr(27)+"S1"+" ITMC ITMC ITMC"+chr(27)+"T"
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
Herzlich,
Tom
Tom
-
- 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: Clipper Druckereinstellungen
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 ......
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
Gruss Carlo