如何以编程方式将组件分配给 Delphi GridPanel 行和列?

Posted

技术标签:

【中文标题】如何以编程方式将组件分配给 Delphi GridPanel 行和列?【英文标题】:How to assign a component to a Delphi GridPanel row and column programmatically? 【发布时间】:2017-05-26 22:48:49 【问题描述】:

我正在使用 Delphi 开发一个项目,我正在动态地为 GridPanel 制作行和列。我还在创建一个面板 (TPanel),我打算将它动态放置在每个单元格中。

我的问题是:如何将新创建的面板分配给 GridPanel 中的特定单元格?

我猜我必须分配面板的“父”属性,以便它是 GridView。但是,我无法调整 TPanel 的“行”或“列”属性,这与使用设计环境将面板分配给 GridPanel 时不同。

【问题讨论】:

你的意思是TGridPanel布局吗? Firemonkey 还是 VCL? 【参考方案1】:

如何将新创建的面板分配给特定的单元格 在 GridPanel 中?

答案是,你不能。将新组件添加到TGridPanel,无论是在设计时还是以编程方式,都会将新组件放置在下一个未占用的单元格中。默认情况下,按从左到右的顺序。

ExpandStyle 属性(emAddRowsemAddColumns)确定TPanelGrid 在填充时如何展开,并添加更多控件。

将新面板(或其他组件)添加到TGridPanel 后,您可以通过ControlCollection 属性访问控件来更改其他人已回答的位置。

【讨论】:

谢谢!这是有道理的,实际上简化了我想做的事情。【参考方案2】:

用途:

 TGridPanelLayout.ControlCollection[position].row := 0;

【讨论】:

虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。【参考方案3】:

您可以访问该属性

TGridPanelLayout.ControlCollection[index].row := 0;

TGridPanelLayout.ControlCollection[index].Column := 0;

【讨论】:

以上是关于如何以编程方式将组件分配给 Delphi GridPanel 行和列?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用在设计时获取“无法将 NIL 分配给 TFont”的 TFont 属性修复 Delphi 组件?

如何以编程方式将 ID 分配给视图?

如何以编程方式将按钮添加到 gridview 并将其分配给特定的代码隐藏函数?

以编程方式将位置分配给android中的按钮

以编程方式填充分配给对象的属性集定义中的数据

使用 C++ 以编程方式将新字母分配给现有驱动器