是否可以将 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 之间的某处删除。