FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
Perder El Foco
He estado mirando y quiero comprobar que cuando paso de un campo a otro el otro campo es correcto.
Esto lo hacia en basic con la propiedad lostfocus, aqui he leido algo de CM_LOSTFOCUS pero no me aclaro como implementar eso ni donde he de declarar el procedimiento. Podrian echarme una mano? |
#2
|
||||
|
||||
Los controles dbedit, edit, etc, tiene el evento OnEnter y OnExit, es lo que buscas.
Incluso en los campos, tienes el evento Onchange. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
||||
|
||||
Hola raquel:
Te propongo un método adaptando una rutina de Zarko Gajic en la que podrás ver a modo de ejemplo, como es posible el cambio de colores entre diferentes TEdit, que supongo que en tu caso serán TDBedit. Adaptando este procedimiento podrías realizar el control que pretendes, sin embargo, he de comentarte, que a mi juicio esto coarta el modo de comportamiento de un programa, dado que si el objetivo es que el usuario vaya a un control específico, sin pasar por otro, o tras haber pasado por otro... ¿Que ocurre si desea volver al anterior ? En fin es tu programa el que ha de discernir cual es el control correcto en un momento determinado, aunque tal como comenta Lepe, creo que lo mejor es usar unas reglas de validación en cada control, y dejar el usuario que determine en que parte de la ventana quiere estar.... El código:
Espero que te resulte útil.
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO |
#4
|
||||
|
||||
Cita:
Ya en serio, estamos en el foro Varios y se habla de Bases de datos, pero no sabemos cual, tampoco sabemos mucho acerca del programa en cuestión, si son muchas las validaciones o es una sola, si estamos en Cliente/Servidor o no.... Así que solo respondí a la pregunta. Normalmente este tipo de validaciones es mejor hacerlo en la Base de datos: - Que un campo se necesita, poner NOT NULL en su definición, que sea el motor de Bases de datos quien haga saltar el error, y después manipulamos el mensaje a mostrar al usuario (para traducirlo a español). - Que un valor no debe repetirse, añadir un índice único sobre ese campo, ya no tendremos que hacer búsquedas para saber si el nuevo dato se repite o no. - Que debe restringirse el rango de datos, (porcentajes entre 1-100, que no permita números negativos), usar los Checks (si se puede) - etc. Ahora que recuerdo, con los eventos OnExit y OnEnter, existe un problemilla: el usuario puede modificar un campo pero no salir de ese DBEdit (porque usemos un SpeedButton para guardar los cambios; un control que no adquiere el foco y por tanto, al pulsarlo, no hará saltar el OnExit del DBEdit), así que el mensaje de error que programemos nunca se verá, y lo más grabe ¡¡ a saber qué guarda en la Base de Datos!! (incoherencias, inconsistencia de datos...). Es cierto que quizás sean conceptos nuevos, o incluso más engorroso de implementar por primera vez, pero sin duda, más fiable que el método "rápido y poco limpio" de usar OnExit y OnEnter. Como siempre, dependerá de qué y cómo quiere hacerlo. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 03-07-2007 a las 14:33:44. |
#5
|
||||
|
||||
Mmmm! No se Lepe.
Parece que el mensaje de raquel, puede dar a distintas interpretaciones. Yo he entendido y citando lo que ella comenta sobre CM_LOSTFOCUS , que el control lo realiza sobre cuando el usuario cambia de un DbEdit a otro... y esta interpretación la hago, porque buscando CM_LOSTFOCUS en estos foros solamente sale un hilo, en el que por cierto participaste tú, y se habla de cambios y control de foco... En todo caso, y a falta de que raquel no de mas detalles del asunto, esperaremos a ver si la hemos solucionado algo, o por contra, lo que hacemos es liarnos todos....
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO |
#6
|
||||
|
||||
Si se va a validar por campo, creo que entonces, más que el evento OnExit del DBEdit, lo adecuado sería el evento OnValidate del TField correspondiente. Pero, yo también considero que este tipo de validaciones lo único que hacen es irritar al usuario. Eran muy típicas de Clipper pero en entornos gráficos no son tan necesarias y es más cómodo hacer la validación en el BeforePost.
// Saludos |
#7
|
||||
|
||||
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Mensaje - Evento... antes de perder el foco, es posible??? | ariefez | Varios | 11 | 13-07-2007 23:28:21 |
Perder foco a cualquier otro programa de Windows | gluglu | Varios | 1 | 21-04-2006 00:28:40 |
borrar al perder foco | Cosgaya | Varios | 2 | 19-12-2005 23:31:19 |
...perder y ganar... | Jure | Humor | 1 | 18-11-2004 14:26:14 |
problema con string grid (desparece el contenido de la celda al perder el foco) | sase | Varios | 0 | 20-08-2003 18:37:59 |
|