![]() |
desaparece el aspa de cerrar la ventana
Buenas:
A ver si alguien me puede ayudar:tengo un problemillla para cerrar las ventanas de los fsMDIChild. Trabajo con Delphi 2006. Tengo un fsMDIForm y cuando entro en los formularios "hijos" no me aparece la X de cerrar la ventana. Pero si me voy a otra (que tampoco me muestra la X) y vuelva a la primera, si que me aparece. Alguien sabe porque no me aparece la primera vez? Un saludo Alopete |
No dices si está maximizado o no.... quizás esto te ayude:
Añade un MainMenu al MDIForm (el principal). Cuando se maximiza una ventana hija, el aspa aparece en el MainMenu. Saludos |
Gracias por responder Lepe:
No he dicho antes que ya tengo un MainMenu y que las ventanas estan maximizadas. Y aun asi no me aparece. en el onCreate del Form hijo tengo puesto (para ver si funcionaba): BorderIcons := BorderIcons +[biSystemMenu,biMinimize,biMaximize]; WindowState := wsMaximized; Pero sigue sin aparecer. Lo curioso es que en mi pc si que aparece siempre pero cuando instalo en otros, no. Me hace pensar que alguna dll no este actualizada o alguna similar pero no se que puede ser. |
Si piensas hacer una interfaz así tipo "emule" donde las ventanas hijas siempre están maximizadas, desaconsejo el uso de MDI.
Usa Frames. Puedes crearlas dinámicamente o en diseño... como quieras. Si quieres más info, avisa. |
Hola de nuevo:
Acabo de ver porque no me salia: en el onActivate de los formularios hijos, tenía puesto lo siguiente: windowState:=wsMaximized; Esto lo puse porquq si teniendo uno de formulario abiertos, abría otro que fuera modal (y no ocupara toda la pantalla), me reducia el tamaño del anterior al tamaño de diseño. Lo que sigo sin comprender es porque me pasa en algunos ordenadores y en otros no. Lo de lo frames si que me interesa porque tengo en mente hacer menús como los de win xp de "Agregar y quitar programas", con unos botones iconicos a la dcha, en otro frame. |
Me alegro de que solucionaras el problema. El comportamiento que describes es normal en MDI. O tienes todas las ventanas maximizadas, o todas restauradas, pero si abres una en modo wsNormal, esto NO hace que las maximizadas se restauren.
Lo del menú de Agregar y quitar, lo puedes conseguir fácilmente con un scrollbox y ahora los frames en su interior creados a demanda. Aquí tienes un ejemplo de cómo trabajar con frames en tiempo de ejecución, no es exactamente lo que pides. Edito: palabrita en rojo. |
jajaj
No lo he resuelto, solo se porque pasa. La verdad es que aun no se como solucionarlo, el problema sigue ahi. Pero ya me falta menos. En cuanto tengo un poco mas de tiempo mirare que me dices de los frames Muchas gracias por todo |
Acabo de modificar mi mensaje anterior... se vé que me tragué una palabra :D.
Suelo tener ventanas hijas maximizadas y al abrir una en modal, NO se restauran las ventanas hijas. Si una ventana hija se abre en modo wsNormal, entonces sí, todas las maximizadas también se restauran. Este es el comportamiento normal de la interfaz MDI. Revisa los eventos OnShow, OnActivate, OnDeactivate y la propiedad state de cada Form. Saludos |
Hola de nuevo:
Al final he quitado del onActivate la instrucción que maximiza las ventanas y ya va bien. Al abrir una modal me mentiene el aspecto de las mdchild. EL problema era que hania alguna que yo pensaba que era modal y realmente no lo era, era mdchild tb. De esta forma, al abrirla y no estar maximizada, se restauraba las demás ventanas. Muchas gracias por todo |
La franja horaria es GMT +2. Ahora son las 09:32:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi