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 04-09-2007
Avatar de novato03
novato03 novato03 is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
novato03 Va por buen camino
Question Maximizar forms MDIChild

Hola estimados amigos del clubdelphi, tengo un formulario fsMDIForm y otras formas fsMDIChild, el asunto es que cuando maximizo los formularios hijos, estos abarcan todo el formulario padre, osea es como si se fusionaran con el formulario padre en uno solo, si alguien me puede decir como le hago para evitar que esto sucede, que cuando esta maximizado se pueda distinguir un formulario de otro, saber cual es el child y cual es el principal.

Espero haberme expresado correctamente. Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 04-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿Te fijaste si en la esquina superior derecha del formulario padre (creo que en realidad del hijo) no aparecen los típicos botones "minimizar", "maximizar" y "cerrar"? Más arriba podrás ver los botones pertenecientes al formulario principal, esto es, que, en cierto modo puede notarse visualmente que hay un formulario hijo... por lo menos mediante dichos botones. Lo que no sé ahora mismo es si dichos botones aparece sólo si el formulario principal cuenta con un "Menú" (TMainMenu).
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 04-09-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola Novato03, revisaste si los formularios hijos tienen la propiedad formstyle como fsMDIChild y no fsNormal?

saludos..
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #4  
Antiguo 04-09-2007
Avatar de novato03
novato03 novato03 is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
novato03 Va por buen camino
Unhappy Asunto

Estan como MDIchild, ya lo he revisado, pero nada.
Responder Con Cita
  #5  
Antiguo 04-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Que yo sepa no se puede evitar dicho comportamiento en aplicaciones MDI.

Lo que yo hago es interceptar el botón maximizar del MDIChild e impedir que se 'maximize' de la manera que describes.

Una propuesta sería que en vez de 'maximizarse' como tal, y comportarse como se ha descrito, se 'aumente' el tamaño del form hijo al máximo permitido de la pantalla padre, quedando el form hijo con sus bordes de ventana, etc.

Yo, en mi caso particular, no permito 'maximizar' los forms hijos, sino que al pulsar el boton de maximizar del hijo, en caso de que el usuario haya cambiado previamente el tamaño del hijo, lo devuelvo a los valores máximos que he definido en la propiedad constraints.

Para interceptar la pulsación sobre el bóton de maximixar, puedes utilizar esto en tu formulario hijo :

Código Delphi [-]
  private
    { Private declarations }
    procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
 

procedure TFormHijo.WMSysCommand(var Msg: TWMSysCommand);
var
  Was_Minimized : Boolean;
begin

  Was_Minimized := False;

  if (Msg.CmdType = SC_MAXIMIZE) then begin
    if WindowState = wsMinimized then Was_Minimized := True;
    WindowState := wsNormal;
    Height      := Constraints.MaxHeight;
    Width       := Constraints.MaxWidth;
    BorderIcons := BorderIcons - [biMaximize];
  end
  else DefaultHandler(Msg);

  if (Msg.CmdType = SC_MINIMIZE) then begin
    BorderIcons := BorderIcons + [biMaximize];
  end;

  if (Msg.CmdType = SC_RESTORE) or (Was_Minimized) then begin
    if (Height = Constraints.MaxHeight) and
       (Width  = Constraints.MaxWidth) then
      BorderIcons := BorderIcons - [biMaximize];
  end;

end;

En este código, además si el form hijo tiene el tamaño máximo establecido, lo que hago es inhabilitar el botón de maximizar. Y sólo lo habilito cuando el usuario cambia el tamaño del form.

Código Delphi [-]
procedure TFormHijo.FormResize(Sender: TObject);
begin
  if (Width <> Constraints.MaxWidth) or
     (Height <> Constraints.MaxHeight) then
    BorderIcons := BorderIcons + [biMaximize]
  else
    BorderIcons := BorderIcons - [biMaximize];
end;

Espero te sirva de ayuda !
__________________
Piensa siempre en positivo !
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
Problema con Append en MDIChild forms enecumene Conexión con bases de datos 8 15-08-2007 21:59:34
Animación/Efecto Forms MDIChild MaMu OOP 14 30-07-2007 17:53:08
Maximizar Forms hmoner Gráficos 1 19-12-2005 04:31:07
Fallos al maximizar ventana MDIChild mazinger Varios 3 08-08-2005 14:23:00
Centrado de Forms MDIChild lafirma OOP 1 24-02-2004 21:07:53


La franja horaria es GMT +2. Ahora son las 01:47:01.


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