在没有预先声明的变量限制的情况下动态创建新组件?

Dynamically creating a new component without predeclared variable limitation?

我正在做一个学校项目。我需要用户单击一个按钮,每次按下按钮时都会创建一个具有新名称的新组件。 我的想法看起来像这样

procedure TForm1.btnClick (Sender: TObject);
Var
    pnlTest1, pnlTest2 : TPanel;
Begin
 If iCount = 1
 then
   Begin
     pnlTest1 := TPanel.Create(Self);
     pnlTest1.Parent := Self;
     pnlTest.Top := 0;
     Etc...
   End
Else if iCount = 2
 Then
  Begin
   PnlTest2 := TPanel.Create(Self);
   PnlTest2.Parent := Self;
   PnlTest2.Top := 0;
   Etc...
End;

问题是我只能创建与创建变量一样多的组件,并且我需要用户创建基本上无限数量的新组件。我也尝试了其他方法,但出现了同样的问题,我也尝试用指针创建动态变量等等,但是这些变量的数据类型仅(在我的努力中)适用于基本数据类型(整数、字符串等)等等我无法在创建组件的 运行 时间内创建变量(在示例 pnlTest 中:已声明 TPanel,这不适用于动态变量)

请告知我如何在每次单击按钮时创建一个新组件而不受先前存在变量的限制,或者请告知我如何使用“无限”数量的变量来创建新组件每次分量。

只需要声明1个指针变量就可以接收新的组件实例,例如:

private
  iCount: Integer;

... 

procedure TForm1.btnClick (Sender: TObject);
Var
  pnlTest : TPanel;
Begin
  pnlTest := TPanel.Create(Self);
  pnlTest.Parent := Self;
  pnlTest.Name := 'pnlTest' + IntToStr(iCount);
  pnlTest.Top := 0;
  //...
  Inc(iCount);
End;

组件实例存储在表单的 ComponentsControls 属性中,因为您将表单分别指定为组件的 OwnerParent