![]() |
Solo para expertos: FullScreen para ventanas MDI
Sé que parece un tema un tanto simple, se han visto varios posts a lo largo de este foro. Sin embargo las soluciones mostradas no son válidas para ventanas MDI. Me explico.
Entre los posts del foro encontré ésta solución: Código:
BorderStyle := bsNone; Sin invalidar la solución anterior, para ventanas SDI la mejor forma es la siguiente: FullScreen para ventanas SDI Código:
if BorderStyle <> bsNone then Luego de analizar el problema me di cuenta que el bug en cuestión aparece al modificar el valor de BorderStyle (para aquellos que no sepan cual es el bug, se lo resumo: las ventanas hijas desaparecen visualmente). Es por este motivo que recurro a ustedes, esperanzado que alguien haya pasado ya por esta situación y quiera compartir su experiencia (y si la conoce, la solución). Gracias por leer. |
¿Qué es exactamente lo que quieres?
Un MDIChild es una ventana que está "dentro de otra"; Partiendo de esa premisa, ¿qué quieres? ¿Una ventana a pantalla completa sin bordes? En ese caso porqué no la heces normal? Que no sea MDI. Si quieres una ventana FullScreen, no tiene sentido que sea MDI. NOTA: ¿Qué pasa que los que no somos expertos no podemos contestar? Personalmente no me ha gustado el título. |
Cita:
Está claro lo que busco, un FullScreen de una ventana MDIForm. Explico de otra manera a ver si queda más claro. Un form padre con una o más ventanas hijas ya creadas (dinámicamente). Se hace un fullscreen en la ventana padre (no bordes y maximizada, encima de toda otra ventana del escritorio) y las ventanas hijas deben seguir viendose (el tamaño de las ventanas hijas no me importan actualmente, calculo que con un maximize para ellas alcanzaría). Al presionarse el mismo botón nuevamente se debería volver al estado inicial. Cita:
Cita:
No es un problema cualquiera, se trata de un bug, y alguien que no sea experto (experto viene de experimentado, que tenga experiencia en el tema) no sabrá como responder y alargará el post con preguntas y no con respuestas que es lo que en definitiva busco, de tal forma que para advertir es que está así el nombre del tema. Si alguien lo tomó como algo arrogante, mis disculpas no fue la intención. |
1 Archivos Adjunto(s)
Primero, pedir disculpas, porque había leído el mail rápido y no había acabado de entender algunas cosas sobre la pregunta...
Siguiendo con la pregunta: Cita:
Por lo tanto, la respuesta a tu pregunta es que no se puede hacer. Al menos, no sin modificar la unit Forms.pas. Otra opción es "emular" el efecto que deseas, realmente no cambiando el borde de la ventana, sino modificando el tamaño y posición para que lo parezca, como puede verse en el ejemplo que adjunto. Quedan "flecos", como el acceso al menú de sistema utilizando teclado que te da acceso a la opción de "mover", o que el formulario esté en una posición negativa con lo que la comprobación del estado tal vez te de un resultado erróneo, pero esas son cosas que puedes "corregir" tú. La primera seguramente con capturando WM_SYSCOMMAND y la segunda utilizando para comprobar, no sólo la posición, sino también el tamaño de la ventana. Cita:
Cita:
|
Tenias razón, no era un bug.
Se trata de la implementación (algo pobre) posiblemente obligada por el api. En fin, gracias por la pronta respuesta. |
Cita:
No se nada de Delphi pero basta con aplicar un poco de sentido común para darse cuenta que no es para nada una buena idea poner títulos así. PD: No figura esto en la guía de estilo? |
La franja horaria es GMT +2. Ahora son las 05:21:49. |
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