Delphi如何使用TGridPanel

20

我想使用Delphi 2009的TGridPanel,但我不知道如何正确使用它。

例如,我想要一个具有4列的GridPanel,每个列应该占GripPanel宽度的25%。

所以我在表单上放了一个GripPanel并添加了4个ColumnItems。 我给列项目设置SizeStyle为ssPercent,然后我尝试给每个ColumnItem赋值25(通过对象检查器)。 但由于某种原因,对象检查器不接受值25。它自动更改为类似于“23.8095238095238”的值。 请问能否简要地解释一下如何使用这些组件呢? 谢谢!

2个回答

18
如果您想将所有列设置为相同的值,请在结构视图中选择所有列,然后(假设SizeStyle已经设置为ssPercent)将Value设置为0。这将触发一些自动机制,使所有列大小相等。

15
当你设置具有ssPercent大小样式的列的值时,组件会将可用总百分比的新总和分配给所有使用ssPercent样式的列。例如,如果您有4个25%的列,并将其中一个设置为50%,则现在您的总和为125%。组件重新计算值以按比例分配总和,即 50%->40% (100 * 50/125)。
要一次设置多个列的值,运行时需要用GridPanel.ColumnCollection.BeginUpdateGridPanel.ColumnCollection.EndUpdate包围您的代码。
在设计时直接编辑.dfm。当您在设计编辑器中查看表单时,请按'Alt+F12',在文本编辑器中找到您的GridPanel,编辑那里的列值,然后再次按'Alt+F12'返回到设计视图。

谢谢,那个有效!顺便提一下:在表单上放置GridPanel并在设计时删除行和列后,这些行和列仍然存在于运行时,您必须手动删除它们。有点奇怪。 - flinkiy1
或者您可以选择所有4列,在对象检查器中写入25。 - VitaliyG
1
@Vitaliy - 这并不比选择所有4个然后输入0更容易,这在Uwe的答案中已经涵盖了。我的答案更有帮助的是,如果你不打算平均分配宽度。当然你也可以这样做,但是其他替代方案确实更好。 - Sertac Akyuz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接