FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Capturar o no el evento on Exit
En el evento onExit de un DBEdit (introducción de Dni) hago una validación del mismo, pero necesitaría que si el exit se produce como consecuencia de la pulsación del boton de cerrar formulario omita esa comprobación, ya que si tengo introducido un dni incorrecto en vez de cerrar salta el evento de dni incorrecto. Como podría obviar el onxit en estos casos?
|
#2
|
||||
|
||||
Hola Apicito!
Yo en tú lugar las comprobaciones de los campos las haría antes de validar el registro, no en el onExit del DBEdit. Así, sólo hago las comprobaciones oportunas cuando realmente quiera grabar el registro. Espero que te sirva. Saludos! |
#3
|
|||
|
|||
Si cierras el formulario con un botón, no podrás controlarlo. Me explico. El orden en que saltan los eventos es el siguiente:
OnExit del DbEdit OnClick del Button Por lo que al salir, "no sabes" a donde vas. Si te gusta la idea, en lugar de un TButton pon un TSpeedButton, el cual hace que el componente origen no pierda el foco (pos lo que no salta el OnExit del componente) y podrás, en el SpeedButton, hacer un Cancel del registro No obstante, validaciones de este tipo, personalmente prefiero hacerlas en el OnValidate del TField (para desligarme del control visual) |
#4
|
||||
|
||||
Gracias por las respuestas. Lo del speedbutton lo había pensado, pero el problema persiste si se cierra con el boton de cerrar de la barra del formulario.
Tendré que validar al final... |
#5
|
||||
|
||||
lo que dicen mis compañeros es cierto, pero en algunos casos la validacion se debe hacer en el onexit del edit, para eso te recomiendo que en el comienzo del onexit coloques este codigo
Código:
if (ActiveControl is BotonSalir) then Exit;
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#6
|
||||
|
||||
Cita:
// Saludos |
#7
|
||||
|
||||
si funciona, pruebalo y veras tengo mucho tiempo utilizando este truco enmis proyectos y va de maravilla
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#8
|
||||
|
||||
Cita:
// Saludos |
#9
|
||||
|
||||
Cita:
quizas sea mas conveniente... pero yo creo que una sana practica de programación es no mezclar los elementos de interacción del usuario con el control de los datos. Yo mismo me he saltado esta regla algunas veces... mas por conveniencia que por deber...
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#10
|
||||
|
||||
Código:
if (ActiveControl is BotonSalir) then Exit; |
#11
|
||||
|
||||
Jachguate: Precisamente a eso me referia a casos de conveniencia, creo qe lo exprese mal pero si es cierto lo que tu dices, pero en algunos casos ahi que romper reglas.
Apicito: Por esa pulsacion no te preocupes, que alli el control no pierde el foco, solo lo pierde en caso de que el control presionado tenga foco, por ejemplo por un TSpeddButton tampoco te preocupes que alli el foco no se pierde
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
|
|
|