Chuck Miller:
> The only problem is creation of of bar code. I think hmbar code does all
> types (128 etc) which are harder to do programmatically. When I tried, I was
> able to get 128 working on a Mac or a PC but not both. The coding seems to
> have been slightly different
If you need a "Code 39" barcode then you can use the following method.
I adapted it out of a component by Thomas Maul and made it standalone.
It returns a picure that you can place on a form to print.
C_TEXT($1;$tCode)
C_LONGINT($2;$lScale)
C_PICTURE($0)
C_TEXT($tPattern;$t;$tSVG;$tLine;$tPoints;$tRef)
C_LONGINT($i;$x;$x2;$y;$y2;$lCount;$lHeight;$lWidth;$lBarwidth;$lScale)
$tCode:=$1
If (Count parameters>1)
$lScale:=$2
Else
$lScale:=1
End if
If ($Tcode#"*@")
$tcode:="*"+$tcode
End if
If ($tcode#"@*")
$tcode:=$tcode+"*"
End if
If (Length($tcode)>32)
g4D_AlertErr ("Code zu lang!")
End if
$tPattern:=""
For ($i;1;Length($tCode))
$t:=$tCode[[$i]]
Case of
: ($t="*")
$tPattern:=$tPattern+"1001011011010"
: ($t="0")
$tPattern:=$tPattern+"1010011011010"
: ($t="1")
$tPattern:=$tPattern+"1101001010110"
: ($t="2")
$tPattern:=$tPattern+"1011001010110"
: ($t="3")
$tPattern:=$tPattern+"1101100101010"
: ($t="4")
$tPattern:=$tPattern+"1010011010110"
: ($t="5")
$tPattern:=$tPattern+"1101001101010"
: ($t="6")
$tPattern:=$tPattern+"1011001101010"
: ($t="7")
$tPattern:=$tPattern+"1010010110110"
: ($t="8")
$tPattern:=$tPattern+"1101001011010"
: ($t="9")
$tPattern:=$tPattern+"1011001011010"
: ($t="A")
$tPattern:=$tPattern+"1101010010110"
: ($t="B")
$tPattern:=$tPattern+"1011010010110"
: ($t="C")
$tPattern:=$tPattern+"1101101001010"
: ($t="D")
$tPattern:=$tPattern+"1010110010110"
: ($t="E")
$tPattern:=$tPattern+"1101011001010"
: ($t="F")
$tPattern:=$tPattern+"1011011001010"
: ($t="G")
$tPattern:=$tPattern+"1010100110110"
: ($t="H")
$tPattern:=$tPattern+"1101010011010"
: ($t="I")
$tPattern:=$tPattern+"1011010011010"
: ($t="J")
$tPattern:=$tPattern+"1010110011010"
: ($t="K")
$tPattern:=$tPattern+"1101010100110"
: ($t="L")
$tPattern:=$tPattern+"1011010100110"
: ($t="M")
$tPattern:=$tPattern+"1101101010010"
: ($t="N")
$tPattern:=$tPattern+"1010110100110"
: ($t="O")
$tPattern:=$tPattern+"1101011010010"
: ($t="P")
$tPattern:=$tPattern+"1011011010010"
: ($t="Q")
$tPattern:=$tPattern+"1010101100110"
: ($t="R")
$tPattern:=$tPattern+"1101010110010"
: ($t="S")
$tPattern:=$tPattern+"1011010110010"
: ($t="T")
$tPattern:=$tPattern+"1010110110010"
: ($t="U")
$tPattern:=$tPattern+"1100101010110"
: ($t="V")
$tPattern:=$tPattern+"1001101010110"
: ($t="W")
$tPattern:=$tPattern+"1100110101010"
: ($t="X")
$tPattern:=$tPattern+"1001011010110"
: ($t="Y")
$tPattern:=$tPattern+"1100101101010"
: ($t="Z")
$tPattern:=$tPattern+"1001101101010"
: ($t="-")
$tPattern:=$tPattern+"1001010110110"
: ($t=".")
$tPattern:=$tPattern+"1100101011010"
: ($t=" ")
$tPattern:=$tPattern+"1001101011010"
: ($t="$")
$tPattern:=$tPattern+"1001001001010"
: ($t="/")
$tPattern:=$tPattern+"1001001010010"
: ($t="+")
$tPattern:=$tPattern+"1001010010010"
: ($t="%")
$tPattern:=$tPattern+"1010010010010"
Else
g4D_AlertErrCaseOf (Current method name)
End case
End for
$tSVG:=DOM Create XML Ref("svg";"http://www.w3.org/2000/svg")
$lHeight:%
$lWidth:=1*$lScale
$x:=1
$y:=1
$i:=1
$tpattern:=$tpattern+"X" // end of code, to make looping easier
While ($i<Length($tPattern))
$lCount:=0
$tLine:=$tPattern[[$i]]
// check if similar are following
While ($tline=$tpattern[[$i+1]]) // we cannot go longer than the
string, thanks to "X"
$lcount:=$lcount+1
$i:=$i+1
End while
If ($tLine="1")
$y2:=$y+$lHeight
$lBarwidth:=($lCount+1)*$lWidth
$x2:=$x+$lBarwidth
$tPoints:=String($x)+","+String($y)+"
"+String($x)+","+String($y2)+" "+String($x2)+","+String($y2)+"
"+String($x2)+","+String($y)
$tRef:=DOM Create XML
element($tsvg;"polygon";"style";"fill:black";"points";$tPoints)
Else //$tLine=0 // White, don't draw
$x2:=$x+($lcount*$lWidth)+$lWidth
End if
$x:=$x2
$i:=$i+1
End while
SVG EXPORT TO PICTURE($tSVG;$0;Copy XML data source)
DOM CLOSE XML($tSVG)
**********************************************************************
4D Internet Users Group (4D iNUG)
Archive: http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub: mailto:[email protected]
**********************************************************************