如何在 delphi 中使用动态数组
how can use dynamic array in delphi
我在 delphi 中使用动态数组。
变量
var
frame3:array[0..10] of TFrame3
procedure TForm1.Button1Click(sender:TObject);
begin
frame3[count] := TFrame3.create(self);
gridpanel2.insertcontrol(frame3[count]);
但是这个代码是 'A component named Frame3 alredy exists.'
这个错误我该怎么办?
如果您需要 Frame3 的多个实例,您需要在创建后为其重新命名。
所以改变
frame3[count] := TFrame3.create(self);
gridpanel2.insertcontrol(frame3[count]);
到
frame3[count] := TFrame3.create(self);
frame3[count].Name := 'Frame3_' + InttoStr(Count);
gridpanel2.insertcontrol(frame3[count]);
另一个问题是在您的代码中看不到您如何更改 count
循环变量。是否提前定义?
你需要做这样的事情:
procedure TForm1.Button1Click(sender:TObject);
var count:byte;
begin
for count:=1 to 10 do
begin
frame3[count] := TFrame3.create(self);
...
end;
或使用任何其他方式在每个数组成员(class 实例)创建之前设置 count
。此代码甚至可能根本不需要设置 Name
属性。
我在 delphi 中使用动态数组。
变量
var
frame3:array[0..10] of TFrame3
procedure TForm1.Button1Click(sender:TObject);
begin
frame3[count] := TFrame3.create(self);
gridpanel2.insertcontrol(frame3[count]);
但是这个代码是 'A component named Frame3 alredy exists.' 这个错误我该怎么办?
如果您需要 Frame3 的多个实例,您需要在创建后为其重新命名。
所以改变
frame3[count] := TFrame3.create(self);
gridpanel2.insertcontrol(frame3[count]);
到
frame3[count] := TFrame3.create(self);
frame3[count].Name := 'Frame3_' + InttoStr(Count);
gridpanel2.insertcontrol(frame3[count]);
另一个问题是在您的代码中看不到您如何更改 count
循环变量。是否提前定义?
你需要做这样的事情:
procedure TForm1.Button1Click(sender:TObject);
var count:byte;
begin
for count:=1 to 10 do
begin
frame3[count] := TFrame3.create(self);
...
end;
或使用任何其他方式在每个数组成员(class 实例)创建之前设置 count
。此代码甚至可能根本不需要设置 Name
属性。