FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cerrar MDI Child con ALT-F4
Hola compañeros !
Como puedo cerrar un MDI Child cuando el usuario pulsa Alt-F4 sin que se cierre la aplicación entera ?! Cada vez que pulso Alt-F4 al tener un form MDI Child activo, lo que hace es pasar directamente la pulsación al form principal y por lo tanto me cierra toda la aplicación. Tengo incluso puesto en el form 'Child' la propiedad KeyPreview = True. Un saludo
__________________
Piensa siempre en positivo ! |
#2
|
|||
|
|||
Esto se debe a que Alt-F4 se usa para cerrar la aplicación y Ctrl-F4 para cerrar las ventanas hijas...
Podrías probar con el siguiente código el cual no he probado:
Este código verifica si existen ventanas hijas abiertas, si es así, cierra la ventana hija activa, de otra manera, se cierra la aplicación... Saludos... |
#3
|
||||
|
||||
Gracias Marcos !
Pero a pesar de todo no funciona. Aunque el proceso de la ventana principal entre al código que propones, también cierra automáticamente la ventana principal, por lo que no me permite ejecutar el código que ponga en el OnKeyDown, incluso si pongo además Key := 0 Alguna otra propuesta ?
__________________
Piensa siempre en positivo ! |
#4
|
||||
|
||||
Buscando, buscando ... encontré algo y añadí otro poco, y me funciona correctamente.
Código:
TMainForm = class(TForm) ... public procedure AppMessage(var Msg: TMSG; var HAndled: Boolean); ... procedure TMainForm.FormCreate(Sender: TObject); begin Application.OnMessage := AppMessage; end; procedure TMainForm.AppMessage(var Msg: TMSG; var Handled: Boolean); begin Handled := False; case Msg.Message of WM_SYSKEYDOWN: if Msg.wParam = VK_F4 then begin if MDIChildCount > 0 then begin ActiveMDIChild.Close; Handled := True; end else Handled := False; end; end; end; Además quedan funcionales todas las opciones de cerrar las ventanas MDIChild o principal de cualquier otra manera, por ejemplo pulsando en la 'X' correspondiente. Si hago click en la 'X' de una ventana MDIChild, sólo se cerrará esta. Y si hago click en la 'X' de la ventana principal, se cerrará directamente toda la aplicación. Si se desea preguntar si se quiere finalizar la aplicación habiendo ventanas abiertas, se puede añadir en el evento OnClose u OnCloseQuery del Form principal. Saludos a todos !
__________________
Piensa siempre en positivo ! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
mdi form and child | ale21alito | Varios | 9 | 07-02-2008 01:04:05 |
CONTROL+TAB en PAGECONTROL dentro de MDI-CHILD | amadis | OOP | 2 | 11-08-2005 08:09:40 |
MDI Child que no se cierran | senpiterno | Varios | 5 | 25-11-2004 06:14:37 |
Paneles Child | JoseQ | Varios | 1 | 21-07-2004 11:09:52 |
Liberar memoria al cerrar un child. | Bahamut | Varios | 2 | 04-05-2004 08:58:51 |
|