Visual Basic
Controles:
* Textbox (txtID)
* Picturebox (Picture1)
* CommandButton (cmdPrint)
Codigo del Modulo:
Codigo Fuente del CommandButton:
Codigo Fuente del TextBox:
Barcode en Visual Basic
Creamos un proyecto nuevo en VB, y solo necesitaremos 3 controles y un modulo.Controles:
* Textbox (txtID)
* Picturebox (Picture1)
* CommandButton (cmdPrint)
Sub DrawBarcode(ByVal bc_string As String, obj As Control)
Dim xpos!, Y1!, Y2!, dw%, th!, tw, new_string$
'define barcode patterns
Dim bc(90) As String
bc(1) = "1 1221" 'pre-amble
bc(2) = "1 1221" 'post-amble
bc(48) = "11 221" 'digits
bc(49) = "21 112"
bc(50) = "12 112"
bc(51) = "22 111"
bc(52) = "11 212"
bc(53) = "21 211"
bc(54) = "12 211"
bc(55) = "11 122"
bc(56) = "21 121"
bc(57) = "12 121"
'capital letters
bc(65) = "211 12" 'A
bc(66) = "121 12" 'B
bc(67) = "221 11" 'C
bc(68) = "112 12" 'D
bc(69) = "212 11" 'E
bc(70) = "122 11" 'F
bc(71) = "111 22" 'G
bc(72) = "211 21" 'H
bc(73) = "121 21" 'I
bc(74) = "112 21" 'J
bc(75) = "2111 2" 'K
bc(76) = "1211 2" 'L
bc(77) = "2211 1" 'M
bc(78) = "1121 2" 'N
bc(79) = "2121 1" 'O
bc(80) = "1221 1" 'P
bc(81) = "1112 2" 'Q
bc(82) = "2112 1" 'R
bc(83) = "1212 1" 'S
bc(84) = "1122 1" 'T
bc(85) = "2 1112" 'U
bc(86) = "1 2112" 'V
bc(87) = "2 2111" 'W
bc(88) = "1 1212" 'X
bc(89) = "2 1211" 'Y
bc(90) = "1 2211" 'Z
'Misc
bc(32) = "1 2121" 'space
bc(35) = "" '# cannot do!
bc(36) = "1 1 1 11" '$
bc(37) = "11 1 1 1" '%
bc(43) = "1 11 1 1" '+
bc(45) = "1 1122" '-
bc(47) = "1 1 11 1" '/
bc(46) = "2 1121" '.
bc(64) = "" '@ cannot do!
bc(65) = "1 1221" '*
bc_string = UCase(bc_string)
'dimensions
obj.ScaleMode = 3 'pixels
obj.Cls
obj.Picture = Nothing
dw = CInt(obj.ScaleHeight / 40) 'space between bars
If dw < 1 Then dw = 1
'Debug.Print dw
th = obj.TextHeight(bc_string) 'text height
tw = obj.TextWidth(bc_string) 'text width
new_string = Chr$(1) & bc_string & Chr$(2) 'add pre-amble, post-amble
Y1 = obj.ScaleTop
Y2 = obj.ScaleTop + obj.ScaleHeight - 1.5 * th
obj.Width = 1.1 * Len(new_string) * (15 * dw) * obj.Width / obj.ScaleWidth
'draw each character in barcode string
xpos = obj.ScaleLeft
For n = 1 To Len(new_string)
c = Asc(Mid$(new_string, n, 1))
If c > 90 Then c = 0
bc_pattern$ = bc(c)
'draw each bar
For i = 1 To Len(bc_pattern$)
Select Case Mid$(bc_pattern$, i, 1)
Case " "
'space
obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &HFFFFFF, BF
xpos = xpos + dw
Case "1"
'space
obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &HFFFFFF, BF
xpos = xpos + dw
'line
obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &H0&, BF
xpos = xpos + dw
Case "2"
'space
obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &HFFFFFF, BF
xpos = xpos + dw
'wide line
obj.Line (xpos, Y1)-(xpos + 2 * dw, Y2), &H0&, BF
xpos = xpos + 2 * dw
End Select
Next
Next
'1 more space
obj.Line (xpos, Y1)-(xpos + 1 * dw, Y2), &HFFFFFF, BF
xpos = xpos + dw
'final size and text
obj.Width = (xpos + dw) * obj.Width / obj.ScaleWidth
obj.CurrentX = (obj.ScaleWidth - tw) / 2
obj.CurrentY = Y2 + 0.25 * th
obj.Print bc_string
'copy to clipboard
obj.Picture = obj.Image
Clipboard.Clear
Clipboard.SetData obj.Image, 2
End Sub
Codigo Fuente del CommandButton:
'Impresion del Barcode
Private Sub cmdPrint_Click()
Printer.PaintPicture Picture1, 100, 100
Printer.EndDoc
End Sub
Codigo Fuente del TextBox:
'Escritura del barcode
Private Sub txtID_Change()
Picture1.Height = Picture1.Height * (1.4 * 40 / Picture1.ScaleHeight)
Picture1.FontSize = 8
Call DrawBarcode(txtID, Picture1)
Dim minwidth, pw, fw As Integer
minwidth = 2 * txtID.Left + txtID.Width
pw = 2 * Picture1.Left + Picture1.Width
fw = minwidth
If pw > fw Then fw = pw
frmAgregarProd.Width = fw
End Sub
Que haces Antrax espero que bien, estuve probando el código. Pero surgió un problema salta un error que dice algo de división de cero, que puede ser??
ResponderEliminarQue datos son los que estas ingresando?
ResponderEliminarPodrias dar mas especificaciones del error?
Hola antrax, el error me salta en el código fuente del textBox, en la linea: Picture1.Height = Picture1.Height * (1.4 * 40 / Picture1.ScaleHeight)
ResponderEliminarCual puede ser el problema??
Acordate de ponerle al Picturebox Picture1, al textbox txtID y al boton cmdPrint
ResponderEliminarSino no va a funcionar.
Avisame si siguen los problemas y subo el ejemplo
Hola antrax, mira los problemas siguen y eso que puse al Picturebox Picture1, al textbox txtID y al boton cmdPrint. me sigue saltando el error de "division por cero".
ResponderEliminarQue estoy haciendo mal???
realiza un debug y ya lo encuentras...
ResponderEliminarHola.
ResponderEliminarCon que version de visual basic lo has hecho?, a mi con la 2008 express me da 32 fallos de codigo!!!