如何以编程方式将组件分配给 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
属性(emAddRows
或emAddColumns
)确定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 组件?