用组件数组啊。
声明一个数组:比如Exam:Array of TLabel
然后用SetLength(Exam,n)分配个数。
Exam[i]:=TLabel.Create(self)用Exam[i]就是你创建的那个控件
Exam[i].属性就行。
声明一个数组:比如Exam:Array of TLabel
然后用SetLength(Exam,n)分配个数。
Exam[i]:=TLabel.Create(self)用Exam[i]就是你创建的那个控件
Exam[i].属性就行。
解决方案 »
- 想作一个像查询分析器那样的东西,请高手帮忙
- QReport安装后对着组件类名按Ctrl键加鼠标左键定位不到源码
- 删除sql 视图中的数据时,能否不删除基表的数据!
- delphi程序移植到Unix平台讨论.顶也有分.
- 一个很简单的用adoquery 更新数据的问题,高手都过来看看呀~!!!!!
- 請問,Delphi中有沒有反字符串拆分開的函數,象vb中的Split
- 高级控件开发技术,up2分,解决给剩下的!
- 怎么在一个子窗体中关闭整个程序?解决就给分
- 使用access的优点thanks all,bow
- 这岗位要求,你们说说薪水得给多少了
- 不是吧,那个数据库程序那么多人要?我那里也有一个更强的啊!
- delphi5.0字符号操作好麻烦?
我的意思是把动态创建的控件的name作为click过程的参数如何传递给click的过程代码.
在动态创建的控中不能用它的Name属性来引用它,应该用数组元素或是链表节点来引用
WinControlArray=array of TObject; //这里可以用TWinControl,如果生成的控件是某一类的话;
var
CtrArray:WinControlArray;每创建一个控件,需要执行如下代码]
SetLength(CtrArray,<此处为数组长度>);
CtrArray[数组下标]:=TButton.Create(Self);
TButton(CtrArray[数组下标]).Parent:=Self;
TButton(CtrArray[数组下标]).OnClick:=Self.Button1Click;
其中Self.Button1Click为预先编好的事件处理代码.
procedure TForm1.Button1.Click(Sender:TObject);
begin
ShowMessage('hello');
end;
你就可以看看运行效果了
谢谢你的答复.但是你说的还是没有突破我的目的,我创建了一控件数组,在给他们定义click事件中,我必须考虑到我是按了他们中的那一个,以便我根据他们的name或下标的不同调用不同的程序,因此关键是如何知道我按下了动态创建了控件数组中的那一个而不是显示一下'hello',要的是知道单击了谁.
var
ArrButton: Array[0..5] of TButton;
i: integer;
begin
for i:=0 to 5 do
begin
ArrButton[i] := TButton.Create(Self);
Self.InsertControl(ArrButton[i]);
ArrButton[i].Top :=100; ArrButton[i].Left := i*100;
ArrButton[i].Tag := i;
ArrButton[i].Name := 'Button'+IntToStr(i);
ArrButton[i].OnClick := onButtonClick;
end;
end;procedure TForm1.onButtonClick(Sender:TObject);
begin
ShowMessage(TButton(Sender).Name);
case i of
0:
……
end;
end;
thank you.