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

How to assign a component to a Delphi GridPanel row and column programmatically?

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

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

我猜我必须分配面板的 "Parent" 属性 以便它是 GridView。但是,我无法为 TPanel 调整 "Row" 或 "Column" 属性,这与使用设计环境将面板分配给 GridPanel 时不同。

您可以访问 属性

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

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

How do you assign the newly created panel to a particular cell that is in the GridPanel?

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

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

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

使用:

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