Prikazi cijelu temu 15.04.2015 08:27
miro35 Van mreze
Clan
Registrovan od:05.01.2009
Lokacija:-


Predmet:Re: Prihodi i rashodi
Evo za barcode.Napravi dva modula.Prvi je
PreuzmiIzvorni kôd (Text):
  1. Option Explicit
  2. ' Written by Rodney Marr (RodMarr@mailcity.com) October 7, 2000
  3. '
  4. ' Barcode 128-B Generator
  5. '
  6. ' Permission granted for public use and royalty-free distribution.
  7. ' No mention of source or credits is required.
  8. '
  9. ' I got a lot of help from the following people's work
  10. ' Russ Adams' BarCode 1 Web Page   http://www.adams1.com/pub/russadam/info.html
  11. ' A Free 128-B code generator in Visual Basic by Stefan Karlsson (mrswede@libertysurf.se)
  12. ' And the Creator of the code 39 Module
  13. '
  14. 'For Notes on how to use this code look at the code for the barcode39 Generator
  15.  
  16. Public Function SetBarData(Ctrl As control, rpt As Report)
  17.    
  18.     On Error GoTo ErrorTrap_SetBarData
  19.    
  20.     'Code 128B has 5 main parts to it. The first part is a start character(211214), followed by DataCharcters. The Data
  21.     'Characters are followed by a check(or Checksum) Character, and that is followed by a stop Character(2331112)
  22.     'The last part of Code 128B is the two quiet sections at the front and back of the barcode. These are 10 dimensions
  23.     'Long(I am thinking that is 11 modules long). Each character is 11 modules long, except the stop character which is
  24.     '13 modules long
  25.    
  26.     Dim CharNumber As Variant, CharData As Variant, CharBarData As Variant, Nratio As Variant, Nbar As Variant
  27.     Dim barcodestr As String, Barcode As String, Barchar As String, Barcolor As Long, Parts As Integer, j As Integer
  28.     Dim tsum As Integer, lop As Integer, s As Integer, checksum As Integer, P As Integer, barwidth As Integer
  29.     Dim boxh As Single, boxw As Single, boxx As Single, boxy As Single, Pix As Single, Nextbar As Single
  30.     Const White = 16777215: Const Black = 0
  31.    
  32.     'This is the Raw data that I threw into an arrays
  33.     CharNumber = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16,", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29,", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106")
  34.     CharData = Array("SP", "!", Chr(34), "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "I", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "DEL", "FNC 3", "FNC 2", "SHIFT", "CODE C", "FNC 4", "CODE A", "FNC 1", "Start A", "Start B", "Start C", "Stop")
  35.     CharBarData = Array("212222", "222122", "222221", "121223", "121322", "131222", "122213", "122312", "132212", "221213", "221312", "231212", "112232", "122132", "122231", "113222", "123122", "123221", "223211", "221132", "221231", "213212", "223112", "312131", "311222", "321122", "321221", "312212", "322112", "322211", "212123", "212321", "232121", "111323", "131123", "131321", "112313", "132113", "132311", "211313", "231113", "231311", "112133", "112331", "132131", "113123", "113321", "133121", "313121", "211331", "231131", "213113", "213311", "213131", "311123", "311321", "331121", "312113", "312311", "332111", "314111", "221411", "431111", "111224", "111422", "121124", "121421", "141122", "141221", "112214", "112412", "122114", "122411", "142112", "142211", "241211", "221114", "413111", "241112", "134111", "111242", "121142", "121241", "114212", "124112", "124211", "411212", "421112", "421211", "212141", _
  36.                                           "214121", "412121", "111143", "111341", "131141", "114113", "114311", "411113", "411311", "113141", "114131", "311141", "411131", "211412", "211214", "211232", "2331112")
  37.                                          
  38.     barcodestr = "211214" 'Add the Startcode for Start B (characterset B) to the barcode string
  39.     tsum = 104            'And this is the value for that startcode which will be added with the other character values to find the checksum character
  40.    
  41.     boxx = Ctrl.Left
  42.     boxy = Ctrl.TOP
  43.     boxw = Ctrl.Width
  44.     boxh = Ctrl.Height    'Get control size and location properties.
  45.    
  46.     Barcode = Ctrl        'Set handle on control.
  47.  
  48.     Nratio = Array("0", "15", "30", "45", "60")       'Set up the array for the different bar width ratios
  49.     Parts = ((11 * (Len(Barcode))) + 35) * Nratio(1)  'This is the formula for the width of the barcode
  50.     Pix = (boxw / Parts)                              'Here I find out exactly how many Pixels a bar will be
  51.     'Set up the array to handle the pixels for each type of bar
  52.     Nbar = Array((Nratio(0) * Pix), (Nratio(1) * Pix), (Nratio(2) * Pix), (Nratio(3) * Pix), (Nratio(4) * Pix))
  53.    
  54.     'Loop through all bardata to count the sum for all characters and add barcode charcter strings the to the barcode string
  55.     For lop = 1 To Len(Barcode)
  56.         Barchar = Mid(Barcode, lop, 1)
  57.         If Barchar = " " Then Barchar = "SP"
  58.         For s = 0 To UBound(CharData)
  59.             If Barchar = CharData(s) Then
  60.                 barcodestr = barcodestr & CharBarData(s) 'This is where I added the character strings to each other to make one long string of 1's, 2's, 3's, & 4's
  61.                 tsum = tsum + (CLng(CharNumber(s)) * lop) 'Here every barcode character's number value is multiplied by its position in the line and added to tsum
  62.                 'The actual formula for find the the  Checksum  is "(104 + (1 * CharcterNumber) + (2 * CharcterNumber) + ...)/103"
  63.                 'You would Use the Remainder as
  64.                 'The Checksum Character. In the case of "BarCode 1" the formula would look
  65.                 'like "(104+(1*34)+(2*65)+(3*82)+(4*35)+(5*79)+(6*68)+(7*69)+(8*0)+(9*17))/103=20 with Remainder of 33"
  66.                 'Therefore the checksum would equal 33
  67.                 Exit For
  68.             End If
  69.         Next s
  70.     Next lop
  71.        
  72.     checksum = tsum - (Int(tsum / 103) * 103)                   'Here I use the the totat sum (tsum) to find the checksum
  73.     barcodestr = barcodestr & CharBarData(checksum) & "2331112" 'Here I add the checksum then the stop character into the barcode string
  74.        
  75.     'lets do some initialization
  76.     Barcolor = Black
  77.     Nextbar = boxx + 11     'I added the 20 for the whitespace (or quiet space) at the beginning of the barcode
  78.    
  79.     'Draw the Barcode
  80.     For j = 1 To Len(barcodestr)
  81.         Barchar = Mid(barcodestr, j, 1)   'Reuse variable barchar to store the character to be drawn
  82.         barwidth = CInt(Barchar)          'Change the barcode charcter into an integer so I can use in the array part of the next line
  83.         rpt.Line (Nextbar, boxy)-Step(Nbar(barwidth), boxh), Barcolor, BF  'Draw the line
  84.         Nextbar = Nextbar + Nbar(barwidth)                                                      'Calculate the next starting point
  85.         If Barcolor = White Then Barcolor = Black Else Barcolor = White      'Swap line colors
  86.     Next j
  87.  
  88. Exit_SetBarData:
  89.     Exit Function
  90.  
  91. ErrorTrap_SetBarData:
  92.     MsgBox Error$
  93.     Resume Exit_SetBarData
  94.  
  95. End Function
Ovaj modul nazovi:Mod_Barcode_Generator_Code128B
Miro