繁体   English   中英

Delphi:MDI 应用程序中的最大化子窗体

[英]Delphi: Maximized Child Form in MDI Application

如何最大化只适合客户区而不适合整个父窗口的子窗口? 我不希望子窗口在父窗口的主菜单或其他控件下消失。

我有这个代码

procedure WMSIZE(var Msg: TMessage); message WM_SIZE;

procedure TForm2.WMSIZE(var Msg: TMessage);
begin
  inherited;
  if Msg.WParam = SIZE_MAXIMIZED then
  begin
    ShowWindow(Handle, SW_RESTORE);
    Left := 0;
    Top := 0;
    Width := Form1.ClientWidth - 4; // The BORDER
    Height := Form1.ClientHeight - 4;
  end;
end;

但这还不够好。 窗口实际上没有最大化。 如果将SW_RESTORE更改为SW_MAXIMIZE则子窗口看起来有问题。

通常,MDI 主窗体的客户端空间应自动计算到没有菜单或栏的空间,前提是这些栏与窗体的边缘对齐。

当条形或其他控件未对齐时,您确实需要自行调整。 处理WM_NCCALCSIZE以告诉 windows 您的表单具有偏离的客户端矩形尺寸。

或者看看NLDExtraMDIProps ,其中我在WParam WParam and $FFF0 = SC_MAXIMIZE时捕获WM_SYSCOMMAND以调整 MDI 子窗口的大小。 该组件提供了一些额外的属性,例如:BackgroundPicture、CleverMaximizing、ShowClientEdge 和 ShowScrollBars。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM