gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:57:12 26 4
gpt4 key购买 nike

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

我有这个代码

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 和 $FFF0 = SC_MAXIMIZE 时,我捕获 WM_SYSCOMMAND 来调整 MDI 子窗口的大小。该组件提供了一些额外的属性,例如:BackgroundPicture、CleverMaximizing、ShowClientEdge 和 ShowScrollBars。

关于Delphi:MDI应用程序中的最大化子窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com