Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Necesito ayuda para crear mdichilds en tabs (https://www.clubdelphi.com/foros/showthread.php?t=72006)

racas 24-01-2011 09:39:40

Necesito ayuda para crear mdichilds en tabs
 
Hola a todos!

Tengo una aplicación con un ribbon, y ademas es mdi, el problema esta cuando un mdichild lo maximizo, entonces los botones de minimizar y cerrar aparecen en la parte izquierda empalmandoce con el boton de aplicación, mi pregunta es como puedo hacer que las mdichilds cuando esten maximizadas se habran en tabs, o alguna otra solución para que no se empalme.

Bueno muchas gracias de antemano!

Saludos!

ecfisa 24-01-2011 15:17:39

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.

Enan0 24-01-2011 16:21:23

Yo alguna vez hice algo similar, puse en la parte de abajo del Main Form un Control Bar, y ante cada nuevo MDI Child creado, Creaba un boton que hacia referencia dicho formulario.

Mediante un PopUp Menu daba la opcion de Cerrar, minimizar o maximizar la ventana en cuestion

saludos


La franja horaria es GMT +2. Ahora son las 03:13:06.

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