我在普通的 VCL 和 XE3 中使用 TGridPanel (在我的 Delphi 中没有 TGridPanelLayout)执行了以下操作。
GridPanel 的问题在于它不允许将控件(按钮等)放置在任何单元格(如 Cell:1,1)中,而在该单元格之前的单元格中没有控件。GridPanel 总是从索引 0 向上填充自己。
所以诀窍是愚弄它。现在取决于您在 GridPanel 中是否已经有其他单元格,如果按钮位于索引较低的单元格中,您将必须为按钮腾出位置,并在其位置放置其他东西。
在按下按钮之前查看表单:
请注意,我尚未在单元格 1,0 处创建 ControlItem。
我想将按钮 1 移动到单元格 1,0。除非我先将其他东西放在它的位置(单元格 0,0),否则我不能这样做。我必须在单元格 1,0 创建一个新的 ControlItem 来容纳 button1。
procedure TForm1.Button1Click(Sender: TObject);
begin
// Places CheckBox1 in the same cell as BUtton1
GridPanel1.ControlCollection.ControlItems[0,0].Control := CheckBox1;
// Create a new ControlItem for Button1 and in the same breath move
// Button1 to it
GridPanel1.ControlCollection.AddControl(Button1,1,0);
// You know what this does. :)
CheckBox1.Parent := GridPanel1;
end;
结果: