none
Inhibir teclado pero no el lector óptico en un control RRS feed

  • Pregunta

  • Estimados

    Tengo una aplicación donde el operador ingresa un código de barras en un Textbox mediante un lector óptico.

    Es una aplicación de control de expedición.

    Lo que no quiero es que el operador pueda ingresar el código manualmente mediante teclado porque se cometen errores o copian un código que no es el correcto.

    ¿De que forma puedo implementarlo?

    Muchas gracias


    dario

    sábado, 1 de julio de 2017 11:52

Respuestas

  • Por si a alguien le sirve encontré una forma de hacerlo: Mido el tiempo entre el primer caracter ingresado y el último.

    Para códigos de 13 dígitos, es imposible ingresarlo manualmente en menos de 1 segundo.

    Condición: La respuesta al ingreso de datos al control de texto se hace únicamente desde el evento KeyDown del textbox luego de ingresar ENTER (El lector debe estar configurado para enviar un ENTER al leer el código)

    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles  TextBox1.KeyDown

    Dim TiempoInicio as Date

    Dim TiempoFin as Date

     

    IF Me.TextBox1.TextLength = 1 Then

       TiempoInicio = Now()

    End If

    IF e.KeyCode = Keys.Enter Then     

        TiempoFin = Now()     

        Dim DifSeg As Integer = DateAndTime.DateDiff(DateInterval.Second, TiempoInicio, TiempoFin)

        If DifSeg > 1 Then  ''Es entrada manual. Se ignora borrando el textbox         

            Me.TextBox1.Text=””           

         Else

             ''Realizar Proceso de respuesta aqui. Es entrada por lector

             ''Al finalizar este proceso se debe borrar el textbox para el ingreso de un nuevo dato

         Endif

    Endif

    End Sub


    dario

    • Marcado como respuesta dario1429 lunes, 3 de julio de 2017 0:53
    lunes, 3 de julio de 2017 0:53

Todas las respuestas

  • Por si a alguien le sirve encontré una forma de hacerlo: Mido el tiempo entre el primer caracter ingresado y el último.

    Para códigos de 13 dígitos, es imposible ingresarlo manualmente en menos de 1 segundo.

    Condición: La respuesta al ingreso de datos al control de texto se hace únicamente desde el evento KeyDown del textbox luego de ingresar ENTER (El lector debe estar configurado para enviar un ENTER al leer el código)

    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles  TextBox1.KeyDown

    Dim TiempoInicio as Date

    Dim TiempoFin as Date

     

    IF Me.TextBox1.TextLength = 1 Then

       TiempoInicio = Now()

    End If

    IF e.KeyCode = Keys.Enter Then     

        TiempoFin = Now()     

        Dim DifSeg As Integer = DateAndTime.DateDiff(DateInterval.Second, TiempoInicio, TiempoFin)

        If DifSeg > 1 Then  ''Es entrada manual. Se ignora borrando el textbox         

            Me.TextBox1.Text=””           

         Else

             ''Realizar Proceso de respuesta aqui. Es entrada por lector

             ''Al finalizar este proceso se debe borrar el textbox para el ingreso de un nuevo dato

         Endif

    Endif

    End Sub


    dario

    • Marcado como respuesta dario1429 lunes, 3 de julio de 2017 0:53
    lunes, 3 de julio de 2017 0:53
  • Hola dario1429,

    Gracias por visitar los foros y compartir con nosotros tu solución.

    Saludos

    Joyce

    __________________________________________________________________________________________
    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, hace que sea más fácil para los otros visitantes encontrar la solución  más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado "tal  cual" y no implica ninguna responsabilidad de parte de Microsoft.

    miércoles, 5 de julio de 2017 16:18
    Moderador