Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2007
Avatar de CID
CID CID is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
CID Va por buen camino
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;
  Top := 0;
  Left := 0;
  Height := Screen.Height;
  Width := Screen.Width;
Es válida para formularios SDI, pero no para MDI.

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
  begin
    BorderStyle := bsNone;
    WindowState := wsMaximized;
  end
  else
  begin
    WindowState := wsNormal;
    BorderStyle := bsSingle;
  end;
Esta última solución tampoco es válida para formularios MDI.

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.
Responder Con Cita
  #2  
Antiguo 29-01-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 29-01-2007
Avatar de CID
CID CID is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
CID Va por buen camino
Cita:
¿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?
Gracias por responder.
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:
En ese caso porqué no la heces normal? Que no sea MDI.

Si quieres una ventana FullScreen, no tiene sentido que sea MDI.
El proyecto en el que trabajo es un programa con interface MDI (bastante avanzado en su etapa de desarrolo, en si ya está terminado, estoy arreglando este tipo de cosas), y para mi si tiene sentido que tenga ese tipo de gui.

Cita:
NOTA: ¿Qué pasa que los que no somos expertos no podemos contestar?
Personalmente no me ha gustado el título.
Ok, cambien el titulo a: Solo para no novatos.
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.
Responder Con Cita
  #4  
Antiguo 29-01-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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:
Empezado por CID
...No es un problema cualquiera, se trata de un bug...
Discrepo contigo en que sea un Bug; Es un comportaminto estandard de las ventanas. Si revisas las VCL verás que si modificas esa propiedad se destruye y se vuelve a crear la ventana; Cualquier ventana hija de la que se destruye también se destruye (entre ellas las MDIChild) por lo que los Handles de los forms se pierden.

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:
Empezado por CID
...Ok, cambien el titulo a: Solo para no novatos.
Ambas cosas sobran, normalmente aquí no hay mensajes para unos usuarios concretos, cada uno aporta lo que puede.

Cita:
Empezado por CID
...no sabrá como responder y alargará el post con preguntas y no con respuestas que es lo que en definitiva busco...
Sí que "suena" un poco arrogante, pero bueno, cada uno...
Archivos Adjuntos
Tipo de Archivo: zip MDI Full Screen.zip (7,4 KB, 42 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 29-01-2007
Avatar de CID
CID CID is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
CID Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 29-01-2007
|NoName| |NoName| is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
|NoName| Va por buen camino
Cita:
Empezado por Neftali
NOTA: ¿Qué pasa que los que no somos expertos no podemos contestar?
Personalmente no me ha gustado el título.
Absolutamente cierto.
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?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
No me puedo conectar a equipo remoto con MySQL (para expertos) aupaneu Conexión con bases de datos 17 06-06-2006 08:40:10
Para expertos en codigo de barras JulioGO Varios 1 29-09-2005 22:01:16
Nuevos Expertos para Delphi lpmlpm Noticias 2 07-09-2005 16:00:10
Solo para expertos... neon Varios 0 15-12-2004 09:59:45
Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) frankmch Conexión con bases de datos 2 08-09-2003 19:44:52


La franja horaria es GMT +2. Ahora son las 18:08:10.


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
Copyright 1996-2007 Club Delphi