Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-01-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Como reconocer el origen de la entrada de texto en un TEdit

Hola foro...

Tengo una duda con la cual me he roto la cabeza toda la mañana.

¿Como reconocer el origen de la entrada de texto en un TEdit?

En la empresa, manejamos unos fichos para establecer turnos de atención a los vehiculos... mientras los vehiculos están dentro del parqueadero, ellos tienen un unico ficho con el cual deben realizar todas las operaciones.

En el momento de llegar a una ventanilla, los conductores presentan el ficho para validar su ingreso y asi proceder con el pago (por ej).

La duda nace pq en el cuadro de dialogo que he hecho para reconocer el ficho o carnet he colocado un TEdit oculto (detras de un panel) con focus desde que se muestra el dialog. Cuando pasan el código por el laser, el lector USB envia los datos al TEdit para procesarlo... todo trabaja OK.

PERO... si en lugar de pasar el códígo de barras por el laser, cualquier usuario ESCRIBE desde el teclado el código del ficho o carnet, al presionar enter... realizará el mismo proceso que con el lector laser.

Esto es un problema de seguridad que los usuarios todavia no saben (ojala y no entren al club jajajaja)... si supieran se volarian la verificación de ficho (algunos conductores lo dejan en el carro, se lo prestan a otro... en fin... eso es parte de la seguridad que queremos implementar)... por eso la pregunta...

¿Como reconocer el origen de la entrada de texto en un TEdit?

Si alguien me puede ayudar... pls.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #2  
Antiguo 18-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Si el lector del cuál hablas funciona como emulador de teclado, dudo que puedas identificar la procedencia de la entrada. Una opción, que he utilizado alguna vez, es utilizar lectores que se comuniquen por el puerto serie, entonces tu manejas la entrada y la tienes bien identificada.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 18-01-2010
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Hasta donde tengo entendido, estos periféricos funcionan emulando el tecleo físico de un usuario procedido por un ENTER. Dependiendo de cada marca y cada modelo, esto puede variar, pues algunos tienen sus propias APIs que puedes usar para evitar que tengas que trabajar a cómo tú lo estás haciendo actualmente.

Tengo como un flash de que en la API de Microsoft Windows existen rutinas que te ayudan a determinar si el "tecleo" fue virtual (Usado por ciertos dispositivos y llamadas a la API) o real (Hecho físicamente por el usuario). Por otro lado, si el periférico es USB es muy seguro que éste envie los "Key Strokes" al sistema directamente, por lo que Windows siempre los interpretará como tecleos reales.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 18-01-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Los dispositivos que uso emulan los keystrokes del teclado y envian a windows (no tienen api propia). Estos keystrokes son como estar tecleando directamente.

he intentado todo el dia con codigos y artilugios de aqui y de allá... por eso esperaba encontrar una solución.

Correción: Todavia... ESPERO... Que Dios ilumine a alguno de nuestros sabios
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #5  
Antiguo 18-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow Una Idea

Has intentado a usar cualquiera de los evento (OnKeyPress ó OnKeyUp ó OnKeyown) del Edit en cuestion.Digo esto ya que los eventos del edit son solo implementados en el Lenguaje Delphi, si tu lector de codigo de barra, esta usando solo APIs para escribir en el Edit, los eventos anteriores nose van a ejecutar(en teoria ),caso contrario, no te servira..
Podrias hacer una simple prueba, coloca el siguiente codigo en el evento OnKeyPress del Edit;
Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); 
begin      
  ShowMessage('Hola');//<--Hay que probar si se ejecuta esto al leer con el laser . 
{Si no se ejecuta, pues ya sabemos por lógica que se escribio con el teclado y no con el lazer VICTORIA}
 {Caso contrario, no sirve, no tomar en cuenta mi IDEA , DERROTA Buscar Otra Alternativa.... }
end;
Espero se haya entendido la idea.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 19-01-2010 a las 14:36:20.
Responder Con Cita
  #6  
Antiguo 18-01-2010
Avatar de The_Duke
The_Duke The_Duke is offline
Miembro
 
Registrado: abr 2006
Ubicación: Republica Dominicana
Posts: 48
Poder: 0
The_Duke Va por buen camino
Puedes probar si el lector envía los caracteres uno a uno o si lo envía todos al mismo tiempo ya que si es así puedes hacer que después de cada tecleo se borren así si presionan más de una vez nunca aran el código con dichos eventods
__________________
BS Picture es un visor de imágenes pequeño y útil que incluye todas las características necesarias
Responder Con Cita
  #7  
Antiguo 19-01-2010
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Que tal,
Pues a lo mejor pueda parecer algo burdo, pero debe de funcionar, mide el tiempo entre el primer "teclazo" y el ultimo, estoy seguro que por muy rapido que uno ingrese la clave, no lo hara mas rapido que el lector laser.
Puedes poner un parametro de "velocidad" de ingreso, si la diferencia entre el primero y el ultimo catacter de la clave es menor que este, pues casi seguro que fue via el lector laser, de otra forma, lo hizo un simple mortal .
Saludos.
__________________
Ya tengo Firma!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Alinear Texto en un TEdit luxus Varios 1 19-07-2006 18:59:55
Limitar entrada de texto en un DBGrid Er_Manué OOP 2 13-06-2006 17:48:21
Sockets-Reconocer una cadena de texto. DarkByte Internet 14 14-06-2004 22:37:29
Alienacion de texto en TEdit PTW Varios 2 19-05-2004 16:18:09
Alinear texto de Tedit cisterpe OOP 2 11-09-2003 13:00:36


La franja horaria es GMT +2. Ahora son las 14:35:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi