Ver Mensaje Individual
  #2  
Antiguo 24-01-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola racas.

Una posible solución es capturar el mensaje WM_SYSCOMMAND para detectar cuando se maximiza el form Child, crearte una función para obtener el tamaño del MDIForm y ajustar el MDIChild en consecuencia.

Ejemplo:
Código Delphi [-]
...
type
  TMDIChild = class(TForm)
  private
    procedure WMSysCommand(var Msg: TWMSysCommand);message WM_SYSCOMMAND;
  public
  end;

var
  MDIChild: TMDIChild;

implementation

uses Unit1;  (* unidad del MDIForm *)

(* Esta función la podés ubicar en una unit de uso común a los Childs *)
function GetMDIClientArea(MDIForm: TForm): TRect;
begin
  if MDIForm.FormStyle = fsMDIForm then
  begin
    if not Windows.GetClientRect(MDIForm.ClientHandle, Result) then
      RaiseLastOSError;
  end
  else
    raise Exception.Create('Error no es un form MDI');
end;

procedure TMDIChild.WMSysCommand(var Msg: TWMSysCommand);
begin
  if Msg.CmdType = SC_MAXIMIZE then
   BoundsRect := GetMDIClientArea(MDIForm)
  else
   DefaultHandler(Msg);
end;

...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-01-2011 a las 16:30:48.
Responder Con Cita