Ayuda con Esc en un Form

Hola, necesito ayuda. Tengo un form con keypreview=true y controlo en el form_keyup que cuando presiones Esc salga del formulario, esto está en Delphi 7. Pero cuando se muestra otro form sobre el mismo en forma modal y aplico el Esc, sale de los dos forms y no solo del que está como superior. Qué puedo hacer para evitar que el form que esta debajo siga viéndose y no se cierre. Gracias

1 Respuesta

Respuesta
1
A ver vamos por partes tu tienes dos formas una es la principal y otra la abres desde la principal, ok.
Ahora en la principal tiene KeyPreview := true; y en el evento OnKeyUp pones el código de esc para terminar la aplicación, ¿correcto?..
Pero dices que cuando abres la segunda forma esta te reconoce al presionar esc y se activa el evento de la principal.
Ahora yo te pregunto estas seguro que la estas abriendo modal es decir pones Form2. ShowModal; ¿O estas usando las MDIForms?..
Pero bueno independiente mente de como las estés abriendo lo que podemos hacer es controlar que forma esta mandando llamar el evento y esto se hace así, para empezar cambia el evento de onKeyUp cambialo a OnKeyPress y pones el siguiente código:
if (Sender is TForm) then
if (Sender as TForm).Name='Form1' then
if Key = #27 then
Application.Terminate;
Si te das cuenta el evento tiene un sender entonces este sender lo conviertes a TForm y preguntas si es Form1 que seria la Forma principal si es así entonces que la aplicación se cierre y si no significa que tienes abierta otra forma y por supuesto no se tiene que cerrar la aplicación. Ok
Dime si te funciono..
No funciona, con esto finaliza toda la aplicación, no solamente el formulario que se ve. Que otra cosa puedo hacer. Gracias
No debería de salirse si tienes una forma Modal encima, se supone que en el código del KeyUp debes tener esto:
if Key = 27 then
Application.Terminate;
Si no lo tienes así cambialo y veras que no se sale.
Ok está perfecto lo que me indicas. Gracias
PD: Tambien funciona ejecutando close, en vez de ejecutar la accion del boton cancelar y antes de cerrar el form ejecutar el código del boton cancelar.
Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas