如何设置大于 1096 像素的表单高度?

How to set form height larger than 1096 pixels?

我正在使用 C++ Builder XE7 并遇到一个奇怪的问题。我需要一个大约 1500 像素的表单高度。问题是对象检查器不允许我指定大于 1096 像素的值。如果我设置任何更大的值,它会自动设置为 1096.. 这个问题存在于任何现有的或新的表单上。我使用的是 Windows 7,屏幕分辨率为 1920x1080。

此行为的原因是当您没有为表单大小设置约束时,Delphi 将通过 WM_GETMINMAXINFO message, which is fired when delphi sets the form size via the SetWindowPos 函数自动获得系统级别的约束。对于最大高度,Delphi 使用 ptMaxTrackSize.Y 成员,在我的 windows 8.1 系统(1920x1080 分辨率)上恰好是 1092。

所以如果你想强制表单高度高于系统桌面高度,你必须使用 Constraints.MaxHeight 来覆盖这个行为。您可以通过在 Vcl.Forms 单元的过程 TCustomForm.WMGetMinMaxInfo 中设置断点来检查这一点。