PDA

Ver la Versión Completa : Como puedo hacer esto ?


cmfab
09-12-2010, 14:40:22
Hola a todos. me explico tengo un TEdit por ejemplo en un form y un botón de comando para cerrar dicho formulario. en el evento onexit del TEdit valido su contenido, si no es correcto devuelvo el focus a dicho control. es decir que siempre el focus va a estar en el TEdit hasta que se ingrese un valor correcto. sucede que si quiero cerrar la ventana presionando el botón de comando "Cerrar", como es logico se ejecuta el envento onexit del TEdit y no puedo Cerrar la ventana para descartar los datos introducidos en el TEdit. Existe alguna manera de poder controlar si se hace click en otro control que no sea el TEdit para obviar el evento Onexit del mismo y poder presionar el botón para cerrar el form. Muchas gracias a todos

marcoszorrilla
09-12-2010, 15:16:41
Si estás dentro del Tedit hagas lo que hagas al salir se ejecutará su evento OnExit.

No entiendo si quieres que estando en otro control se valide el TEdit si tiene datos o no antes de salir.............?

Un Saludo.

cmfab
09-12-2010, 15:23:59
gracias marco por tu repuesta, en realidad se puede hacer como dices de validar al presionar el boton. sucede que puede pasar que hayan muchos TEdit y pensé que se podian validar en su evento onexit para devolver el focus, pero tambien dar la oportunidad de descartar la acción presionando el boton de cerrar el form. no se si a alguien se le ocurre otra idea. gracias

marcoszorrilla
09-12-2010, 15:29:44
Eso es lo que te preguntaba. Entonces lo mejor es que pongas la validación en el evento OnCloseQuery del Formulario:

canClose:=False;
if Application.MessageBox('¿Seguro que desea abandonar?','Atención',mb_OkCancel +
mb_IconQuestion)= idOk then
begin
canClose:=True;

Aqui en vez de la pregunta iría tu validación, si es correcta pones CanClose a True en caso contrario el formulario no se cerrará.

Espero que sea eso lo que pides.

Un Saludo.

cmfab
09-12-2010, 16:04:09
Gracias una vez mas. usaré tu propuesta. saludos