-
Muy buenas a todos, estoy realizando una pequeña aplicación deventa para unabodega, es simple, que consta de venta de productos ingreso de productos y reporte de venta por día, nada mas. Sólo quisiera agregarle un detalle:
1) Cómo podria hacer para agregarle(una simulación) un laser que pueda leer el codigo de barras del producto(el código del productoes ingresado y guardadomanualmente en una bd access, por ejemplo gusrdar el código de barras de unos 50 productos), y que al momento de pasar el laser reconozca el producto y muestre en el form todos los datos del producto.
2) Y el otro problema es que tengo que realizar una contraseña(como inicio)y poderentrar a un form cualquiera, pero la contraseñaconsta de imagenes...nose porque nos complica tanto el profesor, pero bueno tengo que investigar, me imagino que con el cam seria imposible realizar una contraseña cuando te reconoce una imagen...Estoy en esos temas, si alguien tiene un ejercicio parecido le agredeceria mucho si me da una ayudadita. Muchas gracias y suerte a todos.
-
Sobre el 1) ... La mayoria de los lectores de codigos de barra envian la informacion a traves del teclado... El lector se conecta a una "interfase" a la que se conecta tambien el teclado, y esta interfase se conecta a su vez al puerto del teclado de la computadora (una especie de Y, con dos entradas -lector y teclado- y una salida hacia el puerto de teclado de la PC)..
Asi que, practicamente,no tendrias que hacer otra cosa mas que conectar correctamente el lector con su interfase...
Si se trata de otro tipo de lectores (Seriales, USB), muchos de estos funcionan mediante un software del fabricante que recibe la informacion del lector y la tranfiere internamente al puerto de teclado, asi que, estamos en las mismas ...
No entendi lo de "una simulacion" ...
Sobre el 2) ... Te dejo este codigo para generar en un Picture una imagen de una cadena (la contraseña o password que requieres) ...
Para probarlo, necesitas en un formulario, un Picture y los componentes necesarios para que el usuario pueda teclear (y tu puedas validar) lo que la cadena (en la imagen del Picture) muestra (algun label, un TextBox, un Command, etc) ...
Para el ejemplo estoy usando la funcion Genera_Pass() que Zitro (miembro de este foro) publico en la guia de recursos en Jul/2006. La liga para acceder directamente al codigo es http://www.canalvisualbasic.net/foru....asp?TID=25712
Sale ...
''''''''''''''''''
Const LONGITUD_DEL_PASSWORD = 8 'De cuantos caracteres queremos el password ?
Dim sPassword As String ' Esta es la contraseña aleatoria que se genera y muestra en el Picture1
Dim oPicture As PictureBox ' picture para area de trabajo
Private Sub Form_Load()
Call Password_Picture
End Sub
Private Sub Password_Picture()
Dim nPos As Byte
Dim nX As Long, nAncho As Long, nAlto As Long, nY As Long, nHeight As Long
' Generamos el password aleatorio ...
' La funcion Genera_Pass es la que publico Zitro (miembro de este foro)
' en la guia de Recursos, el 23/Jul/2006
' la liga donde esta el codigo es..
' http://www.canalvisualbasic.net/forum/forum_posts.asp?TID=25712
sPassword = Genera_Pass(LONGITUD_DEL_PASSWORD, "", False, True, True, True)
' Fijamos algunas propiedades de nuestro Picture1
Me.Picture1.ScaleMode = vbTwips
Me.Picture1.AutoRedraw = True
Me.Picture1.BackColor = vbWhite
Me.Picture1.DrawMode = vbCopyPen
Me.Picture1.DrawWidth = 2
Me.Picture1.Cls
Randomize
' Generamos un picture "en el aire" como area de trabajo
Set oPicture = Me.Controls.Add("VB.PictureBox", "oPicture1")
oPicture.AutoRedraw = True
oPicture.BackColor = vbWhite
oPicture.Font.Name = "Courier New"
oPicture.DrawMode = vbCopyPen
' determinamos de que ancho sera cada columna en nuestro Picture1
' de acuerdo al ancho total del mismo y la cantidad de caracteres
' del password a mostrar
nAncho = Me.Picture1.ScaleWidth / LONGITUD_DEL_PASSWORD
' Generamos en el picture de trabajo una imagen por cada caracter
' del password aleatorio, con un FontSize (20 a 28) y un color aleatorio
For nPos = 1 To LONGITUD_DEL_PASSWORD
oPicture.Font.Size = Int(8 * Rnd()) + 20 'entre 20 y 28
oPicture.ForeColor = QBColor(Int(7 * Rnd()))
oPicture.Font.Bold = True
' Ajustamos el alto/ancho del picture de trabajo segun el alto y ancho
' que necesitamos para desplegar el caracter en proceso
' segun el FontSize que hayamos previamente determinado
oPicture.Height = oPicture.TextHeight(Mid(sPassword, nPos, 1))
oPicture.Width = oPicture.TextWidth(Mid(sPassword, nPos, 1)) + 100
' Imprimimos el caracter en el picture de trabajo
oPicture.Cls
oPicture.Print Mid(sPassword, nPos, 1)
' Determinamos en que posicion (altura) queremos pintar el contenido
' del picture de trabajo en nuestro Picture1
nAlto = Int(3 * Rnd()) + 1
If nAlto = 3 Then
' mostramos el caracter a todo lo alto
nY = 0: nHeight = Me.Picture1.ScaleHeight
Else
' mostraremos el caracter usando la mitad de la altura
' de nuestro Picture1
nHeight = Me.Picture1.ScaleHeight / 2
If nAlto = 1 Then
' la mostramos desde el tope del Picture1
nY = 0
Else
' la mostramos desde la mitad del Picture1
nY = Me.Picture1.ScaleHeight / 2
End If
End If
' de acuerdo a la posicion del caracter en proceso
' determinamos la columna en el Picture1 donde lo pintaremos
nX = (nPos * nAncho) - nAncho
' "Trasladamos" el picture de trabajo a la columna antes determinada
' dentro de nuetro Picture1
Me.Picture1.PaintPicture oPicture.Image, nX, nY, nAncho, nHeight
Next
' Eliminamos de memoria el picture de trabajo
Me.Controls.Remove "oPicture1"
Set oPicture = Nothing
'Terminamos adornando con algo de confeti el Picture1
For nAlto = 1 To 2000
nX = Me.Picture1.ScaleWidth * Rnd()
nY = Me.Picture1.ScaleHeight * Rnd()
Me.Picture1.PSet (nX, nY), RGB((255 * Rnd()), (255 * Rnd()), (255 * Rnd()))
DoEvents
Next
End Sub
''''
Edited by: Semper
-
Hola Semper, gracias por responder, no sabia que era tan complicado (al menos para mi que soy una principiante en vb), lo voy a estar viendo, y mil gracias por especificar código por codigo, vaser de mucha utilidad para mi. Bye y gracias.
-
Hola Semper, como estas...sabes he estado intentando de una manera "acomodar" el codigo que tu me has dado, pero no logro llegar a mi objetivo..disculpame que te responda en una manera tardia...pero como ije al principio no domino el vb, pero lo he estado intentando y nada, de todas maneras gracias por todo. A veces pienso para el día en que llegue a sustentar, ya no voy a necesitar a una persona de mi institución como tutor...porque en este muy buen foro encontrare todas las soluciones a mis problemas que en el camino encontrare. Gracias a todos...
-
Bueno Fany...
Algo de ejemplo que podrias hacer ...
Tienes un formulario principal que es el que se presenta al abrir tu aplicacion... Este formulario supongo que tendra una barra de menus con las opciones necesarias para los procesos ...
La cuestion esta en presentarle al usuario tu Formulario principal, pero antes de que pueda accesar los menus, presentarle un formualrio secundario (FormLogin) para que escriba la contraseña generada en una imagen (picturebox) ... si dicha contraseña no es correctamente escrita por el usuario, entonces deshabilitar el uso de los menus del Formulario principal. En caso contrario, los menus quedan habilitados y todo continua "normalmente" ...
Bueno... Lo primero ...
En un formulario nuevo
1) Cambiale en las propiedades el nombre a FormLogin yel BorderStyle a 3 (Fixed Dialog) y el ControlBox = False
2) Pones en el mismo 1 PictureBox (Picture1), un Label con el caption = "Escribe la contraseña", un TextBox (Text1) donde el usuario escribira lo que le aparezca en el Picture, 1 Command (Command1) con el Caption = "Aceptar" y 1 Command (Command2) con el Caption = "Cancelar" ...
Al TextBox le puedes poner un * en su propiedad PasswordChar para que no se vea lo que el usuario teclea, o bien, dejarlo en blanco para que lo que teclea sea visible ... Ya depende de ti ...
Ajusta los tamaños del formulario y los componentes a tu gusto ...
3) En este nuevo formulario pegas este codigo ...
'''''''''''
Option Compare Binary ' Para comparar usando Mayusculas/Minusculas
Public bLogin As Boolean
Const LONGITUD_DEL_PASSWORD = 8
Dim sPassword As String
Dim oPicture As PictureBox
Private Sub Form_Load()
bLogin = False
Call Password_Picture
Me.Text1 = ""
End Sub
Private Sub Command2_Click() ' Cancelar
bLogin = False
Unload Me
End Sub
Private Sub Command1_Click() 'Aceptar
If Trim(Me.Text1) = Trim(sPassword) Then
bLogin = True
Unload Me
Exit Sub
End If
' Si no escribio correctamente la contraseña
' mostramos una nueva para que el usuario ponga atencion ...
MsgBox "Contraseña incorrecta... Va de Nuevo..."
Call Password_Picture
Me.Text1 = ""
Me.Text1.SetFocus
End Sub
''''''''''
En este mismo formulario nuevo, pegas luego laSub Password_Picture que te puse en el primer Post (le corregi lo de ponerleconfeti final pues no estaba correcto en este punto el codigo) ... y pegas tambien el codigo de Zitro (Genera_Pass) que esta en el link indicado en dicho post ...
Hasta aqui con el FormLogin (formulario secundario nuevo) ...
'''''''''''
Ahora, en tu formulario principal lo que sigue
Private Sub Form_Load()
Dim oControl As Control
Me.Show
FormLogin.Show vbModal
If Not FormLogin.bLogin Then 'El usuariono escribio la contraseña
MsgBox "Usuario No Autorizado..." & vbCrLf & _
"Se deshabilita el sistema", vbInformation
' Recorremos los controles del formulario y deshabilitamos aquellos
' que sean de tipo Menu ...
For Each oControl In Me.Controls
If TypeOf oControl Is Menu Then
oControl.Enabled = False
End If
Next
Exit Sub
End If
End Sub
''''''''''''
Lo anterior seria un forma muy simple de hacerlo funcionar...
1) Al iniciar tu formulario principal, se llama al FormLogin en forma Modal. El usuario no puede hacer otra cosa que escribir la contraseña mostrada en la imagen del Picture o Cancelar el acceso ...
2) Al retornar el control al formulario principal, se verifica si la variable publica del FormLogin (bLogin) esta en True o en False. Si esta en False, se deshabilitan todos los menus del formulario, de manera que el usuario solo podra cerrar el formulario,y por tanto, la aplicacion...
Si el bLogin estuviese en True, el usuario escribio correctamente la contraseña solicitada y el control continua en forma normal dentro del formuarlio principal ... Nada estara deshabilitado, y el usuario podra acceder a los menus y realizar los procesos que deba realizar ...
'''''''''''
Como dije, es muy simple, pero te sirve de base ....
Saludos ...
-
Gracias Semper, por tu ayuda y respuesta inmediata...voy a intentarlo nuevamente con toda la información que me das creo que es sufiente.Suerte
-
Hola Amigos!. Yo estoy interesado en el codigo de barras. Necesito un algoritmo para generar e imprimir las barras a partir del Nro o cualquier informacion relacionada. Ej: ¿Hay estandares? Cuáles, Dónde se puede consultar? Algun sitio que se ocupe del tema?.
saludos
-
pues aca te dejo un link para que cheques lo de codigos de barras en 128
http://www.forosdelweb.com/showthread.php?t=408736Edited by: Zitro