![]() |
Validando datos con el evento OnExit en un TEdit de Firemonkey
Hola.
Necesito hacer un pequeño programa con firemonkey para una consulta a una base de datos. Estoy haciendo unas pruebas introduciendo un valor en un Edit, en el evento "exit" hago la búsqueda en la base de datos y si no existe doy un mensaje y vuelvo a poner el foco en el Edit. El problema es que el foco se va al siguiente Edit y curiosamente no permite luego "picar" en él con el ratón pero si coge el foco si pulso "Shift+Tab". Imagino que esto en firemonkey tendrá un tratamiento distinto pero no doy con él. ¿Alguna idea? Código de prueba que pongo en el "exit" del primer Edit:
![]() Gracias y un saludo |
Hola a todos,
Confirmo, que, en Firemonkey, ocurre lo que describes, mientras que, con la VCL, todo funciona como esperas. Según esta información, puede tratarse de un "bug" en Firemonkey, o, tal vez, simplemente, no sea posible hacer algo así con Firemonkey. Yo investigaría sobre los eventos de los "TEdit" (precisamente, nuevos en Firemonkey) "OnValidate" y "OnValidating", aunque, he probado a hacer lo mismo (dar el foco, básicamente, al control que nos interesa) con estos eventos, y, tampoco parece funcionar. La posible solución, como también comentan en el artículo que enlazo en el primer párrafo, pasa por usar un "botón" que se encargue de la validación de los datos. Partiendo del evento "Click" de dicho botón, ya sí, podrás dar el foco al "TEdit" que precises, sin problemas. Se menciona además en el artículo algo con lo que estoy de acuerdo: tal vez sea una buena idea usar este botón, y, no hacerlo como tú lo planteas. En todo caso, sí que podrían aprovecharse los eventos mencionados, para proporcionar "feedback" al usuario, a la vez que proporciona los datos de entrada, esto es, antes incluso del "Click" en el botón. |
Pues no sé qué decirte, antes de colgar este hilo probé a poner la validación del dato pulsando un botón, pero claro, necesito llamarlo desde el "exit" del componente y al final hace exactamente lo mismo. El tema es que pienso introducir el dato desde un lector de código de barras que, al recibir la tecla "Enter" después de leer el número, valide el dato de forma automática.
Esto es tan básico que tiene que tener algún tipo de solución. Gracias y un saludo |
Saludos a todos...
Prueba esto
Me había encontrado con un problema similar en una aplicación android con el showmessage y lo resolví de esta forma Te dejo un enlace Saludos |
Manelb.
Gracias por tu respuesta. Efectivamente este código me viene bien y fíjate que esa página que me indicas la había visto y había hecho algunas pruebas con esta instrucción pero, no sé por qué, sin resultado. Veo que cuando sale el cartel del aviso, por debajo el programa sigue su ejecución. Imagino que no se podrá parar la ejecución hasta que no aceptes en el mensaje. ¿Es así? Gracias de nuevo y un saludo. |
Hola a todos,
Además de lo que te ha comentado el compañero, ¿has probado a hacer lo que necesitas (si no me equivoco, dar el foco al control si su contenido no es el esperado) en el evento "OnKeyUp"? No sé si en tu caso particular te serviría, pero, lo siguiente, sí que parece funcionar como se espera, es decir, en caso de error, el foco acaba en el "Edit1":
|
Cita:
|
Cita:
Negativo. Paso el foco al "Edit1" pero "selasopla" y se va al siguiente. Cita:
Bueno... es un mal menor, ya le buscaremos solución. Gracias a los dos |
Hola a todos,
Cita:
|
Cita:
Andalaleche.... pues llevas razón. He vuelto a probar y si que funciona. En la prueba que había hecho no me salía del evento y al continuar, después de coger el foco el "edit" hacía un retorno de carro y se iba otra vez al siguiente. :o:o Gracias y un saludo |
La franja horaria es GMT +2. Ahora son las 06:22:35. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi