Generador de Codigos de Barras

Un nuevo programa que tiene utilidad para cualquier persona que tiene que ordenar muchas cosas, primero una imagen de como es el formulario:



Solo tres componentes son los que encontramos en el formulario: un boton al que llamaremos "cmd_imprimir", un texbox al que llamaremos "txt_codigo", y un picturebox al que llamaremos pic_CB.
Al poner los nombre no debemos de equivocarnos si queremos solo copiar el codigo sin revisarlo, necesitaremos tambien agregar al proyecto un modulo y un modulo de clase.
Vamos a pasar a la programación del boton cmd_imprimir para lo cual haremos doble click en el boton y en el codigo escribiremos lo siguiente:

Private Sub cmd_imprimir_Click()
    Dim ocls_BarCode128 As New cls_BarCode128
    Call ocls_BarCode128.CrearBarCode_128(pic_CB, Trim(txt_codigo.Text), 75, True)
     pic_CB.Visible = True

   Me.Move Me.Left, Me.Top, pic_CB.Width + 100, pic_CB.Height + pic_CB.Top + 400

    If MsgBox("Desea imprimir esta imagen?", vbYesNo + vbQuestion, "Genera codigo barras") = vbYes Then
      Printer.PrintQuality = vbPRPQMedium
      Printer.Orientation = 1
      Printer.PaintPicture pic_CB.Image, 2000, 450, (pic_CB.Width * 2 / 3) - 200, (pic_CB.Height * 2 / 3) - 200
      Printer.EndDoc
   End If

End Sub

Continuamos en el Modulo de Clase que va dividido en varios eventos, estad atentos a los cambios:

en GENERAL   en DECLARACIONES  escribid:

    Private PATRON_128(106) As String

en GENERAL  en secBarra  copiad:
  
Private Function secBarra(nASCII As Integer) As String
     Dim i, j, A As Integer
    'Dim sCad As String
    Dim sIndex As String
    'Dim mat() As String
    Dim sMatBar() As String
    Dim lin() As String
   'sCad = LeerFicha(App.Path & "\mat_Code128.txt")
   'mat = Split(sCad, vbCrLf)

For i = 0 To UBound(PATRON_128)
            lin = Split(PATRON_128(i), " | ")
           'sIndex = aNumero(Mid(mat(i), 1, 4))
       If aNumero(lin(0)) = nASCII Then
           secBarra = lin(1)
         Exit Function
      End If
Next
End Function

 en GENERAL en BarCoder copiad el siguiente codigo: 
 Private Function BarCode(picBarra As PictureBox, sPatron As String, PosX As Integer, Alto As Integer) As Integer
Dim sMatBar() As String

Dim i, j As Integer
Dim x As Integer

sMatBar = Split(sPatron, " ")

picBarra.ForeColor = vbBlack

For i = 0 To UBound(sMatBar)
        For j = 1 To aNumero(sMatBar(i))
                    If i Mod 2 = 0 Then
                         picBarra.Line (PosX, 5)-(PosX, Alto + 5)
                   End If
                   PosX = PosX + 1
       Next
Next

BarCode = PosX

End Function

Atentos que aqui va la mayoria del codigo, repasad sin meter la pata => en General en CrearBarCode_128  copiad:  

Public Sub CrearBarCode_128(picBarra As PictureBox, sCodigo As String, _
Optional Alto As Integer = 75, Optional VerCodigo As Boolean = True)

Dim i As Long

Dim m As Integer, d As Integer, b As Integer, A As Integer

Dim lngX As Long

Dim iX As Long

Dim sMatBar() As String

Dim sCadBar As String

iX = (71 + (11 * Len(sCodigo))) * 30

picBarra.Width = iX

picBarra.ScaleHeight = 1

With picBarra
         .Cls
         .Tag = iX ' Int(picbarra.Width / (71 + (11 * Len(sCodigo))))
         .BackColor = vbWhite
         .FontSize = 9
         .FontBold = True
        .AutoRedraw = True
        .DrawWidth = 2
        .FillStyle = 0
        .ScaleMode = 3 '3
        .ScaleLeft = 0
        .Font.Name = "verdana"
        .ScaleWidth = .Width / 30
         lngX = 20 '19 * 11 / 2 '11
         i = 104
        sCadBar = secBarra(104).Visible = True
       .Height = Alto * 23
        lngX = BarCode(picBarra, sCadBar, Val(lngX), Alto + IIf(VerCodigo, 20, 0))

                   For m = 1 To Len(sCodigo)
                                 sCadBar = secBarra(Asc(Mid(sCodigo, m, 1)) - 32)
                                 i = i + ((Asc(Mid(sCodigo, m, 1)) - 32) * m)
                                 .CurrentX = lngX + 7 ' --- 8
                                 .CurrentY = Alto + 10 '85
                                If VerCodigo Then picBarra.Print Mid(sCodigo, m, 1)
                                     lngX = BarCode(picBarra, sCadBar, Val(lngX), Alto)
                 Next

sCadBar = secBarra(i Mod 103)

lngX = BarCode(picBarra, sCadBar, Val(lngX), Alto)

sCadBar = secBarra(106)

lngX = BarCode(picBarra, sCadBar, Val(lngX), Alto + IIf(VerCodigo, 20, 0))

.Visible = False End With
Exit Sub
End Sub

Y ya por ultimo necesitamos copiar este codigo en GENERAL en INITIALIZE:


Private Sub Class_Initialize()  
 PATRON_128(0) = "0|2 1 2 2 2 2|SP"
 PATRON_128(1) = "1|2 2 2 1 2 2| !"
 PATRON_128(2) = "2|2 2 2 2 2 1| "
 PATRON_128(3) = "3|1 2 1 2 2 3|#"
 PATRON_128(4) = "4|1 2 1 3 2 2|$"
 PATRON_128(5) = "5|1 3 1 2 2 2|%"
 PATRON_128(6) = "6|1 2 2 2 1 3|&"
 PATRON_128(7) = "7|1 2 2 3 1 2| ' "
 PATRON_128(8) = "8|1 3 2 2 1 2| ("
 PATRON_128(9) = "9|2 2 1 2 1 3| )"
 PATRON_128(10) = "10|2 2 1 3 1 2| *"
 PATRON_128(11) = "11|2 3 1 2 1 2| +"

 PATRON_128(12) = "12|1 1 2 2 3 2| , "
 PATRON_128(13) = "13|1 2 2 1 3 2| -"
 PATRON_128(14) = "14|1 2 2 2 3 1| ."
 PATRON_128(15) = "15|1 1 3 2 2 2| / "
 PATRON_128(16) = "16|1 2 3 1 2 2| 0 "
 PATRON_128(17) = "17|1 2 3 2 2 1 | 1 "
 PATRON_128(18) = "18|2 2 3 2 1 1 | 2 "
 PATRON_128(19) = "19|2 2 1 1 3 2 | 3 "
 PATRON_128(20) = "20|2 2 1 2 3 1 | 4 "
 PATRON_128(21) = "21|2 1 3 2 1 2 | 5 "
 PATRON_128(22) = "22|2 2 3 1 1 2 | 6 "
 PATRON_128(23) = "23|3 1 2 1 3 1 | 7 "
 PATRON_128(24) = "24|3 1 1 2 2 2 | 8 "
 PATRON_128(25) = "25|3 2 1 1 2 2 | 9 "
 PATRON_128(26) = "26|3 2 1 2 2 1 | : "
 PATRON_128(27) = "27|3 1 2 2 1 2 | ; "
 PATRON_128(28) = "28|3 2 2 1 1 2 | < "
 PATRON_128(29) = "29|3 2 2 2 1 1 | = "
 PATRON_128(30) = "30|2 1 2 1 2 3 | > "
 PATRON_128(31) = "31|2 1 2 3 2 1 | ? "
 PATRON_128(32) = "32|2 3 2 1 2 1 | @"
 PATRON_128(33) = "33|1 1 1 3 2 3 | A "
 PATRON_128(34) = "34|1 3 1 1 2 3 | B "
 PATRON_128(35) = "35|1 3 1 3 2 1 | C "
 PATRON_128(36) = "36|1 1 2 3 1 3 | D "
 PATRON_128(37) = "37|1 3 2 1 1 3 | E "
 PATRON_128(38) = "38|1 3 2 3 1 1 | F "
 PATRON_128(39) = "39|2 1 1 3 1 3 | G "
 PATRON_128(40) = "40|2 3 1 1 1 3 | H"
 PATRON_128(41) = "41|2 3 1 3 1 1 | I"
 PATRON_128(42) = "42|1 1 2 1 3 3 | J"
 PATRON_128(43) = "43|1 1 2 3 3 1 | K"
 PATRON_128(44) = "44|1 3 2 1 3 1 | L"
 PATRON_128(45) = "45|1 1 3 1 2 3 | M "
 PATRON_128(46) = "46|1 1 3 3 2 1 | N"
 PATRON_128(47) = "47|1 3 3 1 2 1 | O "
 PATRON_128(48) = "48|3 1 3 1 2 1 | P"
 PATRON_128(49) = "49|2 1 1 3 3 1 | Q "
 PATRON_128(50) = "50|2 3 1 1 3 1 | R "
 PATRON_128(51) = "51|2 1 3 1 1 3 | S "
 PATRON_128(52) = "52|2 1 3 3 1 1 | T "
 PATRON_128(53) = "53|2 1 3 1 3 1 | U "
 PATRON_128(54) = "54|3 1 1 1 2 3 | V "
 PATRON_128(55) = "55|3 1 1 3 2 1 | W"
 PATRON_128(56) = "56|3 3 1 1 2 1 | X "

 PATRON_128(57) = "57|3 1 2 1 1 3 | Y "
 PATRON_128(58) = "58|3 1 2 3 1 1 | Z "
 PATRON_128(59) = "59|3 3 2 1 1 1 | [ "
 PATRON_128(60) = "60|3 1 4 1 1 1 | \ "
 PATRON_128(61) = "61|2 2 1 4 1 1 | ] "
 PATRON_128(62) = "62|4 3 1 1 1 1 | ^ "
 PATRON_128(63) = "63|1 1 1 2 2 4 | _ "
 PATRON_128(64) = "64|1 1 1 4 2 2 | `"
 PATRON_128(65) = "65|1 2 1 1 2 4 | a "
 PATRON_128(66) = "66|1 2 1 4 2 1 | b "
 PATRON_128(67) = "67|1 4 1 1 2 2 | c "
 PATRON_128(68) = "68|1 4 1 2 2 1 | d "
 PATRON_128(69) = "69|1 1 2 2 1 4 | e "
 PATRON_128(70) = "70|1 1 2 4 1 2 | f "
 PATRON_128(71) = "71|1 2 2 1 1 4 | g "
 PATRON_128(72) = "72|1 2 2 4 1 1 | h "
 PATRON_128(73) = "73|1 4 2 1 1 2 | i "
 PATRON_128(74) = "74|1 4 2 2 1 1 | j "
 PATRON_128(75) = "75|2 4 1 2 1 1 | k "
 PATRON_128(76) = "76|2 2 1 1 1 4 | l "
 PATRON_128(77) = "77|4 1 3 1 1 1 | m "
 PATRON_128(78) = "78|2 4 1 1 1 2 | n "
 PATRON_128(79) = "79|1 3 4 1 1 1 | o "
 PATRON_128(80) = "80|1 1 1 2 4 2 | p "
 PATRON_128(81) = "81|1 2 1 1 4 2 | q"
 PATRON_128(82) = "82|1 2 1 2 4 1 | r "
 PATRON_128(83) = "83|1 1 4 2 1 2 | s "
 PATRON_128(84) = "84|1 2 4 1 1 2 | t "
 PATRON_128(85) = "85|1 2 4 2 1 1 | u "
 PATRON_128(86) = "86|4 1 1 2 1 2 | v "
 PATRON_128(87) = "87|4 2 1 1 1 2 | w "
 PATRON_128(88) = "88|4 2 1 2 1 1 | x "
 PATRON_128(89) = "89|2 1 2 1 4 1 | y "
 PATRON_128(90) = "90|2 1 4 1 2 1 | z "
 PATRON_128(91) = "91|4 1 2 1 2 1 | { "
 PATRON_128(92) = "92|1 1 1 1 4 3 | | "
 PATRON_128(93) = "93|1 1 1 3 4 1 | } "
 PATRON_128(94) = "94|1 3 1 1 4 1 | ~ "
 PATRON_128(95) = "95|1 1 4 1 1 3 | DEL "
 PATRON_128(96) = "96|1 1 4 3 1 1 | ç "
 PATRON_128(97) = "97|4 1 1 1 1 3 | ü "
 PATRON_128(98) = "98|4 1 1 3 1 1 | é "
 PATRON_128(99) = "99|1 1 3 1 4 1 | â "
 PATRON_128(100) = "100|1 1 4 1 3 1 | ä"
 PATRON_128(101) = "101|3 1 1 1 4 1 | à "
 PATRON_128(102) = "102|4 1 1 1 3 1 | å "
 PATRON_128(103) = "103|2 1 1 4 1 2 | "
 PATRON_128(104) = "104|2 1 1 2 1 4 | "
 PATRON_128(105) = "105|2 1 1 2 3 2 | "
 PATRON_128(106) = "106|2 3 3 1 1 1 2 | "
End Sub

Si sois capaces de copiarlo sin romper nada y agregais los componenetes necesarios vereis como funciona.

No hay comentarios: