Como puede manejar el evento KEYPRESS

Tengo una aplicación de inventario en donde en una misma forma puedo consultar, las clases, marcas, almacenes, suplidor de un articulo POR, que pasa que tengo el evento keypress de cada campo para que ejecute una pantalla de consulta dependiendo de donde este el cursor, el caso es que me retorna bien el valor de la pantalla de consulta pero siempre me sale en el texto esta letra Y y no se como controlar eso, me sale en algunas pantallas y en otras no, podrías decirme como manejar varias consultas simultaneas en una misma forma

1 respuesta

Respuesta
1
No entiendo bien tu pregunta...
¿Tu tienes un formulario con varios TextBox (clase, marca, almacen, etc.) y cuando el usuario sale de cada uno de esos TextBox debe validar el valor ingresado, y si no es un valor aceptable debe hacer la consulta?
Tienes una pantalla de mantenimiento de artículos y estas editando un registro: cuando me posiciono en el texbox de almacen y doy F6 me sale una pantalla para consultar los almacenes, cuando me coloco en el texbox de la clase a la que pertenece y doy F6 me sale la consulta de clases utilizo el siguiente código en el evento keypress del textbox
if nkeycode = -5 then
do form consulta to xxxx
push key clear
on key
Endif
Cuando selecciono el objeto desde la consulta y doy enter pues me sale Y y en algunas ocasiones me ejecuta varias consultas, primero llama una y desde que salgo me llama la siguiente, etc
La programación que haces aparentemente no es visual.
Según mi experiencia las teclas F1, F2, etc. ya no se usan más.
Te puedo dar la solución que casi siempre usamos en este tipo de casos:
Debes tener TextBox (llamemoslo CODIGO_MARCA) y otro TextBox (llamemoslo NOMBRE_MARCA).
En el evento "Init" del formulario escribes el siguiente código:
PUBLIC COD_MARCA, NOM_MARCA
COD_MARCA=0
NOM_MARCA=SPACE(30)
THISFORM.CODIGO_MARCA.VALUE=COD_MARCA
THISFORM.NOMBRE_MARCA.VALUE=NOM_MARCA
THISFORM.REFRESH
En el evento "Lostfocus" del TextBox CODIGO_MARCA, deberas escribir el siguiente codigo:
COD_MARCA=THISFORM.CODIGO_MARCA.VALUE
SELECT MARCAS
SET ORDER TO CODMAR && CODMAR es el indice de la tabla MARCAS ordenada por CODIGO
IF NOT SEEK(COD_MARCA) && Sin no encuentra el codigo ingresado, realiza la consulta.
DO FORM CONSULTA_MARCA
ELSE
COD_MARCA=CODIGO
NOM_MARCA=NOMBRE
ENDIF
THISFORM.CODIGO_MARCA.VALUE=COD_MARCA
THISFORM.NOMBRE_MARCA.VALUE=NOM_MARCA
THISFORM. REFRESH
Deberás asegurarte que en formulario CONSULTA_MARCA asignaras a COD_MARCA el código de la marca seleccionada y a NOM_MARCA el nombre de la marca seleccionada.
--------------------------
Esto, hará que cada vez que pases por el TextBox CODIGO_MARCA, se realice la consulta automáticamente sin tener que usar teclas adicionales (F5, F6, etc.)
Espero te sirva. Cualquier otra duda consúltame. SUERTE!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas