Leer Buffers de Teclado

332 views
Skip to first unread message

sergio

unread,
Mar 30, 2009, 8:15:46 PM3/30/09
to Mundo Visual FoxPro
Estimado Foro: Alguien conoce alguna funcion para tomar los valores
del Buffer de Teclado.En KeyPress recupero el valor de la tecla que
viene en nKeyCode, pero no puedo tomar el valor real del buffers.
Espero haberme explicado claramente. Desde ya Muchas Gracias

Julio Cesar Rodriguez Dominguez

unread,
Mar 31, 2009, 2:44:53 AM3/31/09
to mundovis...@googlegroups.com

Si su codio ASCII dado por nKeyCode no es su valor real, entonces cual es?



--
:: God bless you, every day and every night ::

Fabricio

unread,
Mar 31, 2009, 9:33:13 AM3/31/09
to Mundo Visual FoxPro
Si lo que buscas es capturar las letras y numero, puedes utilizar la
funcion chr(nKeyCode) que devuelve el caracter presionado, pero cuando
el segundo parametro de keypress es diferente de cero, el valor
devuelto por chr() no correspondera al presionado en el teclado,
puesto que generalmente es una combinacion de teclas.

Si no es esto lo que quieres explicate mejor.

Saludos



On 31 mar, 00:44, Julio Cesar Rodriguez Dominguez <jura...@gmail.com>
wrote:

Carlos Miguel FARIAS

unread,
Mar 31, 2009, 4:50:05 PM3/31/09
to mundovis...@googlegroups.com
El segundo parámetro del keypress, es un parametro que por sumatoria te retorna que teclas ademas de las teclado general estan pulsadas, hacen referencia a shift, ctrl y alt.
Los codigos correspondientes a cada tecla (con las otras pulsadas o no) los tenes en la ayuda de INKEY.
Hay combinaciones de teclas que el keypress no puede capturar, porque son pre - accedidas por el sistema (como Ctrol, alt, del).
El primer parametro te retorna el codigo basico.
Tene en cuenta que hay combinaciones que pueden ser capturadas antes por ON KEY LABEL.
Saludos: Miguel

sergio

unread,
Apr 8, 2009, 1:29:05 AM4/8/09
to Mundo Visual FoxPro


Muchas Gracias por sus respuestas, mi inquietud era lograr acceder a
una
busqueda a registros de una base de datos a medida que escribia las
letras
en un texbox, por cada key presionada recibo el valor correspondiente
en nKeyCode,
en pantalla la veo pero si muestro el valor del controlsource de
texbox con un
wait wind datox(controlsouce)del texbox me muestra nulo, sin valores.

Desde ya muchas Gracias foro.

GOOD_FOX

unread,
Apr 8, 2009, 2:48:53 AM4/8/09
to Mundo Visual FoxPro

Hola ke tal....

una forma sencilla es lo siguiente:

En el Keypress del TextBox donde vas a escribir el nombre o dato a
buscar, colocas la rutina de busqueda (se supone que los datos los
muestras en una Grid)

Nota: se supone que la BD ya trae el indice para la busqueda

entonces el KeyPress del TextBox kedaría de esta manera...

*Evento Keypress del textbox

LPARAMETERS nKeyCode, nShiftAltCtrl

*Hace la busqueda en base al indice de la BD, si lo encuentra muestra
el dato que *coincide, sino muestra que no lo encontro
IF SEEK(ALLTRIM(This.Value)) Then
ThisForm.Grid1.Refresh
ELSE
WAIT WINDOW '...DATO NO ENCONTRADO...' NOWAIT
ENDIF



*Ahora Bien, Esto es una busqueda mediante un indice el cual se tiene
que escribir la informacion buscada así como esta guardada en la BD,
existe una busqeuda incremental que utilizo pero eso es con
instruccion SQL...

Espero te sirva para ideas y lograr el procedimiento que deseas..

Saludos

P.D: En Breve subiré un ejemlo de busqeuda incremental....

Carlos Miguel FARIAS

unread,
Apr 8, 2009, 8:28:32 AM4/8/09
to mundovis...@googlegroups.com
Completando lo aportado por el colega, si antes del SEEK activas SET NEAR ON, el puntero de la tabla se ubica en el registro mas cercano cuya clave sea parecida, y funciona como autoincremental.
Saludos: Miguel

sergio

unread,
Apr 8, 2009, 9:56:53 AM4/8/09
to Mundo Visual FoxPro
Muy Bien OK
Gracias Foro es lo que buscaba

Julio Cesar Rodriguez Dominguez

unread,
Apr 8, 2009, 10:22:14 AM4/8/09
to mundovis...@googlegroups.com

En la lista de archivos hay un ejemplo que subi tiempo atras, utiliza sentencias sql. Se llama FiltradoRegistros.rar

sergio

unread,
Apr 9, 2009, 4:10:47 PM4/9/09
to Mundo Visual FoxPro
Estimado GOOD
He probado
IF SEEK(ALLTRIM(This.Value)) Then
ThisForm.Grid1.Refresh
ELSE
WAIT WINDOW '...DATO NO ENCONTRADO...' NOWAIT
ENDIF

Me Ocurre lo siguiente:

Paso 1
Presiono tecla "1"
el valor de nKeyCode es 49 chr(49) = 1
el valor de this.value es 0 en el momento de seek
Pantalla 1

Paso 2
Presiono tecla "2"
el valor de nKeyCode es 50 chr(50) = 2
el valor de this.value es 1en el momentp de seek

Paso 2
Presiono tecla "2"
el valor de nKeyCode es 50 chr(50) = 2
el valor de this.value es 1 en el momento de seek
Pantalla 12

Paso 3
Presiono tecla "6"
el valor de nKeyCode es 54 chr(50) = 6
el valor de this.value es 12 en el momento de seek
en pantalla queda 126
En el momento de seek en this.value no esta almacenado el ultimo key
presionado

Tendra Solucion?
Gracias Goog




El metodo keypress lo llamo de un grid, el controlsource es zcodigo
una variable de memoria




On 8 abr, 11:22, Julio Cesar Rodriguez Dominguez <jura...@gmail.com>
wrote:
> En la lista de archivos hay un ejemplo que subi tiempo atras, utiliza
> sentencias sql. Se llama
> FiltradoRegistros.rar<http://groups.google.com.mx/group/mundovisualfoxpro/files?&sort=author>
Reply all
Reply to author
Forward
0 new messages