GridPanel有问题!我做错了什么吗?第2列的第一行是调整窗体大小的错误。使用Delphi XE 6和10.2.2进行了测试!在表单中放置一个TGridPanel,并将"Align“设置为"alClient”。启动窗体并调整窗体大小。
尝试以下代码:
procedure TForm5.Button1Click(Sender: TObject);
var
Col,Row: Integer;
CI: TControlItem;
Panel: TPanel;
Rows, Cols: Integer;
begin
GridPanel1.RowCollection.BeginUpdate;
GridPanel1.ColumnCollection.BeginUpdate;
GridPanel1.ColumnCollection.BeginUpdate;
GridPanel1.RowCollection.Clear;
GridPanel1.ColumnCollection.Clear;
Rows := 6;
Cols := 4;
for Row := 1 to Rows do
begin
with GridPanel1.RowCollection.Add do
begin
SizeStyle := ssPercent;
Value := 100 / Rows;
end;
end;
for Col := 1 to Cols do
begin
with GridPanel1.ColumnCollection.Add do
begin
SizeStyle := ssPercent;
Value := 100 / Cols;
end;
end;
for Row := 0 to GridPanel1.RowCollection.Count - 1 do
begin
for Col := 0 to GridPanel1.ColumnCollection.Count - 1 do
begin
Panel := TPanel.Create(Self);
Panel.Parent := GridPanel1;
CI := GridPanel1.ControlCollection.Add;
CI.Column := Col;
CI.Row := Row;
Panel.Caption := 'Row ' + Row.ToString + ' Col ' + Col.ToString;
CI.Control := Panel;
end;
end;
GridPanel1.ColumnCollection.EndUpdate;
GridPanel1.RowCollection.EndUpdate;
GridPanel1.ColumnCollection.EndUpdate;
end;发布于 2018-10-11 23:45:50
正如Tom Brunberg所指出的,设置Panel.Parent会将它们放在控件集合中,并对其进行管理。
for Row := 0 to GridPanel1.RowCollection.Count - 1 do
begin
for Col := 0 to GridPanel1.ColumnCollection.Count - 1 do
begin
Panel := TPanel.Create(Self);
Panel.Parent := GridPanel1;
Panel.Caption := 'Row ' + Row.ToString + ' Col ' + Col.ToString;
end;
end;您的代码使集合以48个控件结束,而不是24个。
form1.Caption := 'ControlCollection.Count:' + IntToStr(GridPanel1.ControlCollection.Count);https://stackoverflow.com/questions/52762869
复制相似问题