当您编译空白表格并尝试使用鼠标调整其宽度时,当clientwidth的clientwidth接近屏幕分辨率宽度时,它可能会停止。
即使在设计师中也无法设置更广泛的形式。 (足够奇怪,我永远都不会想到它会发生)。我也玩过Constraints,但这也不是解决方案。
是否可以将Form.Width设置为10000像素?
答案 0 :(得分:3)
窗口大小受系统限制-您可以使用函数GetSystemMetrics(SM_CXMAXTRACK)
检索此值-我的1280x1024显示屏的分辨率为1292。
要使表格更宽,可以处理提供所需最大尺寸的消息WM_GETMINMAXINFO
:
procedure WMGETMINMAXINFO(var M: TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
...
procedure TForm1.WMGETMINMAXINFO(var M: TWMGetMinMaxInfo);
begin
M.MinMaxInfo.ptMaxTrackSize.X := 5000;
M.Result := 0;
inherited;
end;
有了这样的消息处理程序,我可以在运行时成功设置Width := 5000;
。
通常,您应该能够使用表单的Constraints
属性并设置其MaxWidth
来实现此目的,就像this answer一样,但是WM_GETMINMAXINFO
中的TCustomForm
在Delphi中是有缺陷的7.从消息处理程序中调用ConstrainedResize
方法取决于某个FSizeChanging
布尔值字段,不幸的是,该字段从未设置为true。此问题已得到纠正,并且在D2007和DXE之间的某个位置删除了该字段。