我试图使用常规方式更改许多labels的标题:

form1.label1.caption := '1';
form1.label2.caption := '2';
form1.label3.caption := '3';
form1.label4.caption := '4';
form1.label5.caption := '5';
form1.label6.caption := '6';
form1.label7.caption := '7';
form1.label8.caption := '8';
...


如何使用For并将i分配给像Label[i]这样的标签名称?像这样:

for i := 1 to 50 do
   begin
     form1.label[i].caption := Inttostr(i);
   end;


更改太多对象参数(在本例中为caption)的最佳方法是什么?

最佳答案

动态创建控件。如果需要保留对它们的引用,请将这些引用保存在数组中。例如,这是一般模式。

var
  FLabels: array of TLabel;
....
SetLength(FLabels, Count);
for i := 0 to Count-1 do
begin
  FLabels[i] := TLabel.Create(Self);
  FLabels[i].Parent := Self;
  FLabels[i].Caption := IntToStr(i+1);
  FLabels[i].Left := 8;
  FLabels[i].Top := 8 + i*20;
end;

关于delphi - 在Delphi中使用变量作为对象名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18812960/

10-12 21:23