Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-02-2004
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 13-02-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
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!
Responder Con Cita
  #3  
Antiguo 13-02-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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)
Responder Con Cita
  #4  
Antiguo 13-02-2004
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
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...
Responder Con Cita
  #5  
Antiguo 13-02-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
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;
donde boton salir es el nombre del boton que utilizas para cerrar el formulario,si necesitas validar para otros controles entonces utiliza el condicional "or" y solo tienes que repetir la condicion para cada control que necesites que tome el foco sin validar
__________________
...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
Responder Con Cita
  #6  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por eduarcol
Código:
    if (ActiveControl is BotonSalir) then
        Exit;
Quizá me equivoque pero me parece que esto no funciona. El edit no pierde el foco sino hasta que termina el evento OnExit de manera que ActiveControl será él mismo.

// Saludos
Responder Con Cita
  #7  
Antiguo 13-02-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 13-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por eduarcol
si funciona, pruebalo y veras
Tienes toda la razón, ya lo probé.

// Saludos
Responder Con Cita
  #9  
Antiguo 22-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por eduarcol
pero en algunos casos la validacion se debe hacer en el onexit del edit
Tu truco está muy bien, y no dudo que sea util... pero no estoy de acuerdo en que se "debe"...

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
Responder Con Cita
  #10  
Antiguo 23-02-2004
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 22
apicito Va por buen camino
Código:
    if (ActiveControl is BotonSalir) then
        Exit;
Y si el botón pulsado es el de cerrar ventana, osea el de la barra azul de la ventana, como lo identifico como ActiveControl?
Responder Con Cita
  #11  
Antiguo 23-02-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:47:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi