我正在做一个学校项目。我需要用户单击一个按钮,并且每次按下按钮都会创建一个具有新名称的新组件。 我看起来像这样的想法
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,这不适用于动态变量)
请告知我每次单击按钮时如何创建新组件而不受已有变量的限制,或者建议我如何拥有“无限”数量的变量来分别创建一个新组件时间。
答案 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;
组件实例存储在表单的Components
和Controls
属性中,因为您分别将表单分配为组件的Owner
和Parent
。