Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Cerrar FORM con la tecla escape (https://www.clubdelphi.com/foros/showthread.php?t=84830)

lmpadron 11-12-2013 15:53:04

Cerrar FORM con la tecla escape
 
Saludos comunidad

Tengo esta "pequeña aplicación" y necesito cerrar todas las ventanas (forms) excepto la principal (MAIN) con la tecla escape (VK_ESC), intente escribiendo el evento ONKEYPRESS de la FORM pero no sucede nada, imagino sea porque sobre estas FORMS estan otros componentes (paneles, grids, etc...) por loq ue el evento nunca se produce sobre el FORM.
Ahora bien, escribir este evento en cada posible componente en que el usuario pueda estar enfocado (focus) es una tragedia por lo que imagino ya de ante mano a alguien se le halla presentado esta dificultad y por supuesto sea capaz de ayudarme.
Realice una busqueda por el club pero no encontré nada !!!
Imagino que tal ves exista algo como eventos globales, tal ves definiendo el ONKEYPRESS o algo parecido pueda lograr que las ventanas se cierren.
Gracias por su tiempo

dec 11-12-2013 16:20:25

Hola,

Mira a ver si poner la propiedad del formulario "KeyPreview" a "True" te sirve de algo. ;)

lmpadron 11-12-2013 19:40:00

Pues si !!! asi funciona perfectamente !!! ... Gracias Dec!!!

dec 11-12-2013 22:14:22

Hola,

Una forma de evitar codificar nada en los eventos mencionados suele ser utilizar la propiedad "Default", "Cancel" y "ModalResult" de un determinado botón. En pocas palabras, podemos imaginar dos botones: "Aceptar" y "Cancelar". En el primer botón ponemos a "True" su propiedad "Default" y su propiedad "ModalResult" a "mrOk". En el segundo botón ponemos a "True" su propiedad "Cancel" y su propiedad "ModalResult" a "mrCancel".

Haciendo esto no será necesario codificar nada para cerrar un formulario "modal" al pulsar la tecla "Escape" y/o "Enter", sino que este será el comportamiento "por defecto". Claro está que para esto será necesario poner en el formulario dichos botones "Aceptar" y "Cancelar", pero, esto suele ser habitual en los "diálogos" de los programas en Windows.


La franja horaria es GMT +2. Ahora son las 22:06:32.

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