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

时间:2018-06-25 15:24:09

标签: delphi delphi-7

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

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;

问题是我只能创建与创建变量一样多的组件,并且我需要用户基本创建无限数量的新组件。我也尝试了其他方法,但是发生了同样的问题,我还尝试了使用指针创建动态变量等,但是这些变量的数据类型仅(在我的努力中)与基本数据类型(Integer,String等)一起工作,因此我无法在运行时创建变量来创建组件(在示例pnlTest中:已声明TPanel,这不适用于动态变量)

请告知我每次单击按钮时如何创建新组件而不受已有变量的限制,或者建议我如何拥有“无限”数量的变量来分别创建一个新组件时间。

1 个答案:

答案 0 :(得分:4)

您只需要声明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

相关问题