FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con evento OnExit
Hola a Todos:
Tengo un problema el cual de forma simplificada es: en un formulario tengo dos controles un Edit y un Button, ahora yo quisiera que al abandonar el control Edit poder validar su contenido esto lo hago en el evento OnExit, si al terminar de llenar el Edit doy tab o click en el Button se activa el evento OnExit (sin problema), el problema esta que en el Button la propiedad Caption tengo &Ok, por lo que si tecleo Alt+O al finalizar de llenar el Edit no se me activa el evento OnExit de este y pasa directamente al Button ¿alguien me pudiera decir como solucionar esto sin quitar el acceso por teclado al Button ? Santiago |
#2
|
||||
|
||||
Hola,
A mí se me ocurre algo que no sé si será una barbaridad o qué. Se trataría de sustituir el procedimiento de ventana del formulario en que se encuentra el "TEdit", de tal modo que estuviéramos pendientes de cierto mensaje ("CM_DIALOGCHAR") que se produce justo al procesarse las "teclas aceleradoras". Podríamos aprovechar ese mensaje, pues, para llamar al disparar el evento "OnExit" del "TEdit", o validar su contenido, en todo caso. Pero encuentro al menos dos posibles problemas. Primero, que el evento "OnClick" del botón se seguirá produciendo, eso sí, después de haber recibido (y procesado) el mensaje susomentado; el otro problema es que el mensaje en cuestión se producirá sean cuales sean las teclas aceleradoras utilizadas por el usuario. Para esto último quizás valiera discriminar la tecla aceleradora en cuestión (se muestra en el código cómo puede hacerse), pero, sumado al primer problema no sé yo si haría viable esta solución, que, aparentemente, podría servir, pero, habría que verla "en marcha", o sea, en tu propio proyecto funcionando... Se aceptan más sugerencias, de todos modos.
Última edición por dec fecha: 14-04-2006 a las 15:50:03. |
#3
|
||||
|
||||
Lo que yo hacía en estos casos era poner explícitamente el foco en el botón OK por código:
Así me aseguraba que cualquier evento OnExit se ejecutara. // Saludos |
#4
|
||||
|
||||
Hola,
Cita:
|
#5
|
|||
|
|||
Asombroso, yo me puse a investigar el comportamiento de los eventos con las teclas aceleradoras y me di cuenta que al activar una de estas ejecuta el codigo asosiado (en el ejemplo planteado el OnClick del Button) pero el Edit no perdía el foco por lo que nunca se ejecutaba el evento OnExit de este.
Habia pensado en el evento OnKeyDown del formulario de esta forma pero de esta manera el codigo OnExit del edit se me ejecutaba dos veces pues como el edit se queda con el foco al salir de este se ejecuta nuevamente La solución de roman me parece maravillosa por lo sencilla y efectiva Muchas gracias a todos por la ayuda ¡Que fuera de nosotros sin los foros! Siempre dos cabezas piensan mejor que una |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Evento OnExit de un Edit | Caro | OOP | 1 | 03-02-2006 17:57:01 |
Evento Hint | lotos8ar | Varios | 6 | 07-10-2005 17:23:55 |
Evento OnClick | vtdeleon | OOP | 4 | 08-08-2005 23:40:18 |
OnExit | DarioArg | Varios | 2 | 12-03-2005 02:34:55 |
El evento OnActivate | esquerda21 | Varios | 8 | 18-06-2003 18:03:35 |
|