¿Como puedo detectar que se pulsa la tecla Enter?


([N1] JMVA) #1

Tengo abierto un formulario de MODIFICACIÓN e intento detectar errores del operador usuario. Un campo sólo puede tomar valor “A” o “B”. Pongo controles mediante un “manejador de eventos” y una “conexion de eventos” de manera que cuando ese campo pierde foco y su contenido no es válido, aparece un mensaje y el campo vuelve a recibir foco por lo que, teóricamente, no se podría abandonar el campo sin poner los valores correctos. Pero descubrí que si pones un valor incorrecto y si pulsas “Enter” se cierra el formulario de modificación con ese valor. ¿Como puedo detectar que se pulsa la tecla Enter y hacer que no se pueda salir del formulario sin poner los valores correctos?


([N1] ViperNET) #2

Estimado ares

Me supongo que debes tener un botón “Aceptar”, el mismo que se activa cuando presionas la tecla “Enter”.

Lo que yo usualmente hago, es que en el botón “Aceptar” le asigno un evento, el mismo que a su vez valida la información del formulario antes de aceptar los cambios. Si pasa la validación, entonces se acepta, caso contrario, se rechaza y despliega un mensaje de error.

Espero haber ayudado.

Saludos,

Victor


([N1] Pepeto) #3

Prueba esto en un evento del formulario:

Define 2 variables:
KEY = Alfabetica
EVENT_PARAMS = Alfabetica de tipo Array y 1 dimension

Luego en un evento: EVENTO_INTRO

Set KEY , EVENT_PARAMS[1]
if ((KEY=16777220) | (KEY=16777221))

y dentro del IF ya sabes si se ha pulsado INTRO o RETURN

Crea una conexion de evento en un control de edición:
Control: EDIT_NOM
Señal: Tecla soltada
Slot: EVENTO_INTRO

un saludo
José Luis
http://www.ascsl.com


([N1] JMVA) #4

Hola: Ante todo, José Luis, quería darte las gracias a por tu respuesta a mi problema.
No obstante tengo que comentarte una cosa relacionada con el tema, cosa que puede ser interesante para otra gente a la que se le presente este problema
Al hacer el evento (EVENTO_INTRO), al intentar incluir en él la instrucción- Set KEY, EVENT_PARAMS (1) -, al intentar incorporar la variable local EVENT_PARAMS en el casilleto correspondiente de la instrucción Set, aparece un error de sintaxis, tanto si incorporo la variable con el Buscador de variables del Editor de fórmulas como si tecleo a mano, letra a letra, el texto EVENT_PARAMS(1)
Sin embargo esto no ocurre si la defino como variable global pero poniendo, en el editor de fórmulas de la instrucción Set, el nombre de la variable EVENT_PARAMS y no EVENT_PARAMS(1), que también da error de sintaxis.
Aún no probé si funciona. Mañana será otro día


([N1] JPACHECO) #5

hola,podrian decirme si existe algun equivalente para el “keypreview” para el formulario principal en velneo, de ante mano muchas gracias


([N4] Infortic) #6

Hola JMVA

Para un array debes usar corchetes, no paréntesis.

EVENT_PARAMS[1]

Como variable global dudo que te funcione, por ser una variable local predefinida que maneja el propio formulario.

De todas formas, el problema de que se te cierre el formulario es porque tiene la propiedad botón por defecto a True en algún botón (el de aceptar o el de cancelar) por lo que captura la tecla enter dicho botón, quitándo esa propiedad evitarás ese comportamiento sin necesidad de capturar el Enter por evento.

Jordan, que yo sepa no existe la propiedad keypreview como tal.