Die Erstellung der entsprechenden Label funktioniert einwandfrei, so wie ich es möchte. Nur den QR-Code-Generator, hier aus dem Forum, einzubauen,
dass schaffe ich nicht. Kann mir ein User dabei helfen ? Weitere Erklärungen befinden sich im Code. Danke!!
Erforderliche qrcodelib.lib :
https://storage.googleapis.com/google-c ... -3.1.1.zip
Code-Generator aus dem Forum: http://forums.purebasic.com/german/view ... it=barcode
Code: Alles auswählen
; Labelgenerator mit QR-Code und Drucksteuerzeichen für ein bestehendes Druckprogramm
; Die erzeugten Zeilen befinden sich in "Druck-Etiketten.txt", der QR-Code in "Pic".
;
; Es werden Zeilen mit oder ohne fortlaufender Nummer (zwei Etikettentypen) erzeugt.
; Das erzeugten Etikettentypen sehen nach der Erstellung der Druckzeile wie folgt aus:
;
; mit fortlaufender Nummer:
;
;
; ABCDEFG
; Artikel
; CABG200001 QR-Code
; 357098
;
;
; oder ohne fortlaufender Nummer:
;
;
; ABCDEFG
; Artikel
; CABG20 QR-Code
; 357098
;
;
; Der erzeugte QR-Code (noch nicht in Funktion) muss folgendes beinhalten:
;
; Artikel + 357098 + CABG200001
; bzw.
; Artikel + 357098 + CABG20
;
; Die Daten für den QR-Code befinden sich jeweils in: "codezeile$" und die Codes müssen mit fortlaufender Nummer
; gespeichert werden. Beispiel: CABG200001.bmp CABG200002.bmp (siehe Druckzeilen)
;
; Artikeleingabe soll auf 13 Zeichen begrenzt sein (noch nicht im Prog)
; CABG200001 = CABG ist das Jahr in Buchstaben; 20 ist die Kalenderwoche; 0001 ist die fortlaufende Nummer
; 357098 ist die Lieferantennummer
;
;
;
; Erzeugte Druckzeilen mit fortlaufender Nummer:
;
; <g1300#350#600#600#CABG200001.bmp><t520#10#200B#Arial Narrow#ABCDEFG><t100#730#120#arial#357098><t100#325#120#arial#z.B. NP003><t100#525#120#arial#CABG200001>
; <g1300#350#600#600#CABG200002.bmp><t520#10#200B#Arial Narrow#ABCDEFG><t100#730#120#arial#357098><t100#325#120#arial#z.B. NP003><t100#525#120#arial#CABG200002>
;
; ohne Nummer:
;
; <g1300#350#600#600#CABG200001.bmp><t520#10#200B#Arial Narrow#ABCDEFG><t100#730#120#arial#357098><t100#325#120#arial#z.B. NP003><t100#525#120#arial#CABG20>
;
; #druck1, #druck2, #druck3, #druck4, #liefnr werden später aus einer externen Datei geladen.
;
; QR-Generator: http://forums.purebasic.com/german/viewtopic.php?f=8&t=24911&hilit=barcode&sid=91c6d34329c15b8c0ab64d11f9ba3050
;
;
#verzeichnis = "C:\Code\" ; muss existieren!
#path_logfile = "C:\Code\Log\" ; muss existieren!
#logfile = "Druck-Etiketten.txt"
;#barcodes = "C:\Code\Pic\" ; für die Barcodes
#druck1 = "<g1300#350#600#600#$$$$$$NNN$$.bmp><t520#10#200B#Arial Narrow#ABCDEFG><t100#730#120#arial#357098>"
#druck2 = "<t100#325#120#arial#$N$NN$N$>"
#druck3 = "<t100#525#120#arial#$$$$$$NNN$$>"
#druck4 = "<t100#525#120#arial#!!!$$$NNN$$>"
UseJPEGImageEncoder()
#Image = 0
#file = 0
#liefnr = "357098"
Enumeration
#Artikel
#window
#windowhilfe
#Gadget_text_Nr
#Gadget_String_Nr
#Gadget_String_Nr1
#Gadget_Image
#Gadget_text_anz
#Gadget_spin_anz
#Gadget_Artikel
#Gadget_Artikel_Nr
#start_button_mit
#start_button_ohne
#SNummer
#Gadget_text_SNr
#bcode
#amazone
#lfnr
#Art
#druckzeilen
#drz; Druckzeile
EndEnumeration
Global laufende_nr$,lNummer$,lieferantennummer$
lieferantennummer$ = #liefnr
CreateImage(0, 200, 200)
Procedure Hauptfenster(datum$,kw); Hauptfenster erstellen
OpenWindow(#window,500,500,440,500,"Etiketten mit CR39 Barcode", #WS_OVERLAPPEDWINDOW|#PB_Window_ScreenCentered )
EditorGadget(0, 120, 0, 200, 15)
ImageGadget (3, 120, 270, 430, 550, ImageID(0), #PB_Image_Border) ;Fenster für QR-Code
TextGadget(#PB_Any, 10, 70, 80, 30, "Artikel Eingabe:")
StringGadget(#Artikel, 120, 70, 85, 19, "z.B. NP003")
TextGadget(#PB_Any,250,70,190,20,"Lieferantennummer = "+lieferantennummer$)
TextGadget(#PB_Any,250,100,190,20,"Kalenderwoche = "+kw)
Datey$ =FormatDate("%yyyy", Date())
Date$ = FormatDate("%dd.%mm.%yyyy", Date())
TextGadget(#PB_Any,250,130,190,20,"Jahr "+Datey$+" in Buchstaben = "+datum$)
TextGadget(#PB_Any,250,40,190,20,"Heutiges Datum = "+Date$ )
TextGadget (#Gadget_text_SNr ,10, 100, 100,20,"Erste Seriennummer:")
StringGadget(#SNummer, 120, 100, 85, 19, "0001")
TextGadget (#Gadget_text_anz ,10, 40,110,20,"Anzahl der Barcodes:")
SpinGadget (#Gadget_spin_anz ,120 ,40,50,20,10,100,#PB_Spin_Numeric); auf 10 Etiketten eingestellt, normal auf 1
SetGadgetState(#Gadget_spin_anz,1)
ButtonGadget(#start_button_mit,10,130,87,20,"Mit S-Nummer")
ButtonGadget(#start_button_ohne,120,130,87,20,"Ohne S-Nummer")
ProcedureReturn
EndProcedure
Procedure generate_anz(datum$,kw) ; Anzahl der Barcodes
anz= Val(GetGadgetText(#Gadget_spin_anz))
If CreateFile(#file,#path_logfile+#logfile )
For i = 1 To anz
luft$=" "
Artikel$ = GetGadgetText(#Artikel)
Nummer$ = GetGadgetText(#SNummer)
name$ = datum$+kw+Nummer$
codezeile$ = Artikel$+luft$+lieferantennummer$+luft$+datum$+kw+Nummer$; Code-Zeile für den QR-Code
stringname$ = name$
logeintrag1$ = ReplaceString(#druck1,"$$$$$$NNN$$",stringname$)
logeintrag2$ = ReplaceString(#druck2,"$N$NN$N$",Artikel$)
logeintrag3$ = ReplaceString(#druck3,"$$$$$$NNN$$",stringname$)
logeintrag$= logeintrag1$+logeintrag2$+logeintrag3$
WriteStringN(#file,logeintrag$)
alterwert$ = Mid(stringname$,7,4)
zahl = Val(alterwert$)
neuezahl = zahl + 1
neuerwert$ = RSet(Str(neuezahl),4,"0")
neuereitrag$ = Mid(stringname$,1,6) + neuerwert$ + Mid(stringname$,10,2)
SetGadgetText(#SNummer,neuerwert$)
Next
CloseFile(#file)
EndIf
EndProcedure
Procedure ohne(datum$,kw) ; Barcodes mit Seriennummer am Ende der Druckzeile
anz= Val(GetGadgetText(#Gadget_spin_anz))
If CreateFile(#file,#path_logfile+#logfile )
For i = 1 To anz
luft$=" "
Artikel$ = GetGadgetText(#Artikel)
Nummer$ = GetGadgetText(#SNummer)
name$ = datum$+kw+Nummer$
codezeile$ = Artikel$+luft$+lieferantennummer$+luft$+datum$+kw; Code-Zeile für den QR-Code
jahr$ = datum$+kw
stringname$ = name$
logeintrag1$ = ReplaceString(#druck1,"$$$$$$NNN$$",stringname$)
logeintrag2$ = ReplaceString(#druck2,"$N$NN$N$",Artikel$)
logeintrag4$ =ReplaceString(#druck4,"!!!$$$NNN$$",jahr$)
logeintrag$= logeintrag1$+logeintrag2$+logeintrag4$
WriteStringN(#file,logeintrag$)
alterwert$ = Mid(Nummer$,1,4)
zahl = Val(alterwert$)
neuezahl = zahl + 1
neuerwert$ = RSet(Str(neuezahl),4,"0")
neuereitrag$ = Mid(stringname$,1,6) + neuerwert$ + Mid(stringname$,10,2)
SetGadgetText(#SNummer,neuerwert$)
Next
CloseFile(#file)
EndIf
EndProcedure
Procedure.s buchstaben(Jahr); Umwandlung der Jahreszahl in Buchstaben- Ausgabe: datum$=buchstaben(1)
Dim feiertag.s(10)
Date$ = FormatDate("%yyyy", Date())
meindatum$=""
For i=1 To Len(Date$)
b.a=Asc(Mid(Date$,i,1))+17
meindatum$+Chr(b)
Next i
datum$=meindatum$
feiertag(5)=datum$
ProcedureReturn feiertag(5)
EndProcedure
Procedure.b GetKW(PJahr.w,PMonat.b,PTag.b) ; Ermittlung der Kalenderwoche - Ausgabe mit: date.l = Date() + kw=GetKW(Year(date),Month(date),Day(date))
WT4J.b = DayOfWeek(Date(PJahr.w,1,4,0,0,0))
If WT4J.b = 0 : WT4J.b = 7 : EndIf
MoKW1.b = 4-WT4J.b
WTGD.b = DayOfWeek(Date(PJahr.w,PMonat.b,PTag.b,0,0,0))
If WTGD.b = 0 : WTGD.b = 7 : EndIf
MoGD.w = DayOfYear(Date(PJahr.w,PMonat.b,PTag.b,0,0,0))-WTGD.b
KW.b = Int((MoGD.w-MoKW1.b)/7)+1
If PMonat.b = 12
Week1Q.w = DayOfYear(Date(PJahr.w,PMonat.b,PTag.b,0,0,0))
WT4JNY.b = DayOfWeek(Date(PJahr.w+1,1,4,0,0,0))
If WT4JNY.b = 0 : WT4JNY.b = 7 : EndIf
LastYDay.w = DayOfYear(Date(PJahr.w,12,31,0,0,0))
If LastYDay.w - Week1Q.w < WT4JNY.b -4
KW.b = 1
EndIf
EndIf
If PMonat.b = 1 And PTag.b < 4
If WT4J.b < WTGD.b
KW.b = GetKW(PJahr.w-1,12,31)
EndIf
EndIf
ProcedureReturn KW.b
EndProcedure
date.l = Date()
kw=GetKW(Year(date),Month(date),Day(date))
datum$=buchstaben(1)
; ; ab hier QR-Generator
;
; http://forums.purebasic.com/german/viewtopic.php?f=8&t=24911&hilit=barcode&sid=91c6d34329c15b8c0ab64d11f9ba3050
:
; CompilerIf #PB_Compiler_Unicode = 0
; CompilerError "compile with UNICODE!"
; CompilerEndIf
;
; EnableExplicit
; Define File.s
; Define event.i
; Define ImgID.i
; Structure QRCode
; Version.l
; Width.l
; pSymbolData.l
; EndStructure
; Enumeration
; #QR_ECLEVEL_L = 0 ; lowest
; #QR_ECLEVEL_M
; #QR_ECLEVEL_Q
; #QR_ECLEVEL_H ; highest
; EndEnumeration
;
;
; UseJPEGImageEncoder()
;
; ImportC "qrcodelib.lib"
; QRcode_encodeString8bit(Text.p-utf8, Version.l, QRecLevel.i) As "_QRcode_encodeString8bit"
; QRcode_free(*Qrcode.QRCode) As "_QRcode_free"
; EndImport
;
; Procedure CreateQRCode (content.s, ImgID = #PB_Any, EC_Level = #QR_ECLEVEL_L, Size=4 )
; Protected *Qrcode.QRCode, QRImg, *mem, w, y, x, b
; *Qrcode = QRcode_encodeString8bit(content, 0, EC_Level)
; With *Qrcode
; If *Qrcode = 0 Or \Width = 0
; ProcedureReturn #Null
; Else
; *mem = \pSymbolData
; w = \Width
; EndIf
; EndWith
; QRImg = CreateImage(ImgID, w, w)
; If QRImg
; If ImgID = #PB_Any
; ImgID = QRImg
; EndIf
; EndIf
; If StartDrawing(ImageOutput(ImgID))
; Box (0, 0, ImageWidth(ImgID), ImageHeight(ImgID), #White)
; For y = 0 To w - 1
; For x = 0 To w - 1
; b = PeekB(*mem) & $FF
; If b & 1
; Plot( x, y, #Black)
; EndIf
; *mem + 1
; Next
; Next
; StopDrawing()
;
; ;w * Size
; w * 3.5
;
;
; ResizeImage( ImgID, w, w, #PB_Image_Raw)
; EndIf
;
; QRcode_free(*Qrcode)
;
; ProcedureReturn ImgID
; EndProcedure
;
; ; bis hier der QR-Code
Hauptfenster(datum$,kw);Hauptfenster
Repeat
Select WindowEvent()
Case 0, 1,2
If IsImage(ImgID)
SetGadgetState(3, ImageID(ImgID))
EndIf
Case 3
Delay(1)
Case #PB_Event_CloseWindow
If EventWindow() = #Windowhilfe
Else
End
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case #start_button_mit
generate_anz(datum$,kw)
Case #start_button_ohne
ohne(datum$,kw)
EndSelect
EndSelect
ForEver
; IDE Options = PureBasic 5.42 LTS (Windows - x86)
; CursorPosition = 224
; Folding = -
; Markers = 149
; EnableUnicode
; EnableXP
; Executable = QR-Label.exe