La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1268 - KEYPRESS DE TEXTBOX. NKEYCODE SIEMPRE DEVUELVE 0
Autor:  Javier Amoros Canto
Hola a todos y gracias de antemano.
Tengo una aplicacion en Visual FoxPro V 5.0a, y en un formulario,
tengo un Textbox para introducir el codigo del cliente.

Si el usuario no sabe el codigo de cliente, pulsando F2, llama a un formulario
de consulta.
Para controlar esto, en el evento KeyPress del control, tengo

IF nKeyCode = 1 .OR. nKeyCode = -1
DO FORM Consulta .......
ENDIF

el caso es que en ocasiones, al pulsar F2, no funciona. Cansado de probar,
puse la instruccion
WAIT WINDOW ´Valor de nKeyCode : ´+ALLTRIM(STR(nKeyCode))
y cual fue mi sorpresa al comprobar que cuando falla, el
wait window siempre muestra 0 (cero) como valor de nKeyCode

¿ Que estoy haciendo mal ?

Desde ya gracias.

  Respuesta:  OMAR MARTELO
JAVIER AQUI TE MANDO UN EJEMPLO DE COMO LO HICE YO EN UNO DE MIS PROGRAMAS....
AQUI UTILIZE VARIABLES DE AYUDA...PARA SABER CUANDO SE USARA...

if nkeycode=13
if !empty(this.value)
nitemp1=alltrim(thisform.text3.value)
smysql="select nomclient from clientes where nitemp=?nitemp1"
sqlsetprop(gnconn,'batchmode',.f.)
sqlmoreres(gnconn)
if sqlexec(gnconn,smysql,'buscacemp2')=-1
messagebox('¡error!',16,'¡error!')
else
select buscacemp2
go top
if !eof()
thisform.text4.value=buscacemp2.nomemp
else
messagebox('Este cliente no se encuentra registrado',64,'ok')
thisform.combo1.setfocus
thisform.command2.enabled=.t.
thisform.command1.enabled=.t.
thisform.command3.enabled=.t.
thisform.command5.enabled=.t.
thisform.command4.enabled=.t.
endif
endif
endif

endif
if nkeycode=-1
this.value=""
set defa to c:\sys-aprendiz
varayuda=2
do form ayuda.scx
endif

ESPERO QUE TE SEA DE AYUDA....

  Respuesta:  NAvS
MIRA YO TE ACONSEJO KE PONGAS LO SIGUIENTE
IF LASTKEY() = -1
DO FORM 1
ENDIF
Y SI QUIERES AGREGAR OTRA TECLA VUELVES A TECLEAR
IF LASTKEY() = 1
DO FORM 2
ENDIF

  Respuesta:  Manuel Jesus Duran Chusan
Amigo es raro pero te digo que borres el text y crees de nuevo ese objeto
no uses "on key label2 es mas complicado si no te pudes asi en el formulario en keypress activala como .t. y valida desde el formulario, o puedes validar en el evento lostfocus que cuando en dato que ingrese no exista aparesca el otro formulario con la lista de datos.
cual quier pregunta mi mail

  Respuesta:  Luis Miguel Caballero
Sugiero que cambies el código para que sea
ON KEY LABEL F2 DO CONSULTA

y no te olvides de limpiar esto con ON KEY LABEL F2 al salir del procedimiento o el formulario

  Respuesta:  Jose Maria Sosa
Prueba usando Lastkey()
ej:
if lastkey() = -1
do form consulta
endif

a mi me funciona bien así.
cualquier cosa mandame un mail.
chau, buena suerte.