Hola _CALI.
Al maximizar un MDIChild este ocupa el área cliente del MDIForm, ese es su comportamiento natural y al menos yo no conozco manera de cambiar eso. Pero podes interceptar el maximizado, redimensionar y mostrarlo normalmente, como en el código anterior.
Una pequeña "
mejora" al código anterior podría ser:
Código Delphi
[-]
procedure TForm2.WMSysCommand(var Msg: TWMSysCommand);
begin
if Msg.CmdType = SC_MAXIMIZE then
begin
Left := 0;
Top := 0;
Width := frmMDIForm.ClientWidth - 4;
Height := frmMDIForm.ClientHeight - 4;
BorderIcons:= BorderIcons - [biMaximize]; WindowState:= wsNormal;
end
else
begin
BorderIcons:= BorderIcons + [biMaximize]; DefaultHandler(Msg);
end
end;
Cuando la ventana está restaurada al valor fijado y al estar deshabilitado el ícono maximizar, el usuario no intentará hacer click inútilmente sobre él.
Para que pudiera verse el ícono restaurar, el MDIChild tendría que estar maximizado. Pero si lo está, tenemos que atenernos su comportamiento natural que es ocupar todo el área cliente del MDIForm.
Saludos.