PDA

Ver la Versión Completa : Restringir lectura código de barras a un Tedit


hogol
10-10-2012, 12:07:01
Saludos a todos

Trabajo con delphi 7 y estoy haciendo un pequeño programa TPV.

He colocado en el formulario de venta un tedit para el código de barras del producto, otro para la cantidad y otro para el precio.

Estoy buscando una manera de forzar que la lectura del código de barras siempre aparezca en el edit que le toca, evitando que si por ejemplo pasan el lector cuando el focus está en la cantidad pondrá el código en dicha casilla.

No se si hay modo de distinguir una entrada que viene del lector de una entrada de teclado. Si fuera así supongo que podría poner un filtro.

También podría contar el número de carácteres que entran para intentar distinguir una cosa de otra, pero no me acaba de convencer.

En fin, os expongo el problema por si alguien tiene un modo más elegante de resolverlo.


Saludos y gracias por adelantado
Joan

Casimiro Notevi
10-10-2012, 12:20:58
También puedes controlarlo por la cifra en sí, me explico, tanto los campos cantidad como precio serán siempre pequeños: cantidad>=10000 no es lógico y precio>=100000 tampoco es lógico, así que puedes controlarlo de esa manera.

Otra alternativa sería desactivar el lector de códigos de barras, pero eso ya depende de cada uno, lo mismo se puede o no.

hogol
10-10-2012, 12:55:25
Hola Casimiro

Gracias por tu interés.

La solución que comentas es lo que comentaba yo de contar los carácteres y filtrar en función de la longitud.

La duda que tengo iba enfocada a si hay modo de distinguir una entrada de teclado de una entrada del lector. Si no hay modo de hacerlo supongo que acabaré haciendo lo que has sugerido.

Un saludo y gracias.
Joan

Casimiro Notevi
10-10-2012, 13:07:36
Es lo que te comentaba, que dependerá del dispositivo, en principio no puedes diferenciar si la entrada es por teclado o lector, aunque si el lector está conectado a un puerto usb, por ejemplo, lo mismo sí puedes desactivar ese puerto y volver a activarlo en el campo código.

cesarsoftware
10-10-2012, 15:54:19
Ahi 2 formas de hacer eso.

La primera es usar algo parecido a odette, es decir que le fuerces al lector a enviar un caracter previo al codigo (Q para cantidad, V para precio, etc)
La segunda es usar un lector por puerto serie y cuando llega algo por ese puerto pasarlo directamente al tedit que quieras.

En serio, se hace asi:)

ecfisa
10-10-2012, 17:11:22
Hola hogol.

Si, existen dos formas de capturarlo como bién dice cesarsoftware.

Te pongo algunos enlaces relacionados por si pudieran servirte, buscando seguramente encontrarás más al respecto.

Detectar si la entrdad fue por Lector de Codigo de barras (http://www.clubdelphi.com/foros/showthread.php?t=58653)
How I know if the input is by Keyboard or barcode scanner? (http://www.delphipages.com/forum/showthread.php?t=133885)
Lector de codigo de barras en delphi (http://www.trucomania.org/trucomania/foros/viewtopic.php?p=2053&sid=eb50697c6050f322817ab0099db0ab7e)
Capture Keyboard Input on the app (barcode reader) (http://www.delphipages.com/forum/showthread.php?t=153869)


Saludos.

Casimiro Notevi
10-10-2012, 17:16:56
Todos los días se aprende algo :)

ecfisa
10-10-2012, 17:50:14
Todos los días se aprende algo :)
El modo que sugeriste arriba también es válido, entraría en la categoria de detección por teclado. :)

También se podría agregar algún caracter al campo en cuestión para identificarlo... y seguramente existan muchas triquiñuelas mas dando vueltas por ahí.

Saludos. :)

Edito: Y también mencionaste la captura por puerto...

hogol
17-10-2012, 11:33:36
Muchas gracias por las ideas y los links que me habeis pasado.

Como dice Casimiro, siempre se aprenden cosas nuevas :)

La idea del carácter de control del lector me parece genial, pero como lo usan para otras cosas prefiero no tocar nada.

Así que finalmente creo que me inclinaré por la detección por teclado.

Un saludo y muchas gracias