是否可以将 Form.Width 设置为 10000 像素?
Is it possible to set Form.Width to 10000 pixel?
当您编译空白表单并尝试使用鼠标调整其宽度时,当客户端宽度接近屏幕分辨率宽度时,它可能会停止。
即使在设计器中也无法设置更宽的表格。 (够奇怪的,我永远不会认为它会发生)。我也玩过Constraints,但也不是解决办法。
是否可以将Form.Width设置为10000像素?
Window 大小受系统限制 - 您可以使用函数 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
来实现这个 但 WM_GETMINMAXINFO
of TCustomForm
Delphi 7 中存在缺陷。从消息处理程序调用 ConstrainedResize
方法取决于某些 FSizeChanging
布尔字段,不幸的是,该字段从未设置为 true。这已得到纠正,该字段已从 D2007 和 DXE 之间的某处删除。
当您编译空白表单并尝试使用鼠标调整其宽度时,当客户端宽度接近屏幕分辨率宽度时,它可能会停止。
即使在设计器中也无法设置更宽的表格。 (够奇怪的,我永远不会认为它会发生)。我也玩过Constraints,但也不是解决办法。
是否可以将Form.Width设置为10000像素?
Window 大小受系统限制 - 您可以使用函数 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
来实现这个 WM_GETMINMAXINFO
of TCustomForm
Delphi 7 中存在缺陷。从消息处理程序调用 ConstrainedResize
方法取决于某些 FSizeChanging
布尔字段,不幸的是,该字段从未设置为 true。这已得到纠正,该字段已从 D2007 和 DXE 之间的某处删除。