gpt4 book ai didi

delphi - 有没有一种方法可以在不改变 BorderStyle 的情况下使 Delphi VCL 窗体变大?

转载 作者:行者123 更新时间:2023-12-03 14:43:21 24 4
gpt4 key购买 nike

我刚刚花了相当多的时间尝试在 GExperts 中使 Delphi 6/7 IDE 的“工具/环境选项”对话框变得相当大。一切似乎都工作正常,直到我发现将表单的 BorderStyle 更改为 bsSizing 会关闭并重新创建表单的句柄,并在此过程中丢失调色板配置的列表框的内容。(之后 Items 属性为空。)

更改表单的大小(通过设置高度和宽度)可以正常工作,但允许用户调整大小会遇到上述问题。

有什么方法可以在不改变BorderStyle的情况下使Delphi窗体变大吗?

最佳答案

“Wnd”是对话框句柄,您可以将对话框转换为带有尺寸框的重叠窗口:

SetWindowLong(Wnd, GWL_STYLE,
GetWindowLong(Wnd, GWL_STYLE) and not WS_POPUP or WS_THICKFRAME);

删除对话框框架:

SetWindowLong(Wnd, GWL_EXSTYLE,
GetWindowLong(Wnd, GWL_EXSTYLE) and not WS_EX_DLGMODALFRAME);

然后附加适当的系统菜单项以调整要处理的消息的大小:

AppendMenu(GetSystemMenu(Wnd, False), MF_STRING, SC_SIZE, 'Size');

并绘制新框架:

SetWindowPos(Wnd, 0, 0, 0, 0, 0,
SWP_NOSIZE or SWP_NOMOVE or SWP_NOZORDER or SWP_FRAMECHANGED);

关于delphi - 有没有一种方法可以在不改变 BorderStyle 的情况下使 Delphi VCL 窗体变大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254553/

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