下面是别人的回答,但我要多次用每个控件,用TAG的方法,每次我都要进行判断,好像效果不好.能不能声名为: Images: array [1..16] of TImage; 就表示窗体上的16个Image控件?所谓控件数组可以简单理解为具有相同name属性的控件集合,如绘制10个TEXT控件,它们的NAME属性均为txtindex。通过使用控件数组,可以使这些TEXT控件共享相同的事件过程。 在delphi里。我觉的要按概念来讲是不可能产生同名控件但能够达到这种效果。但是所谓的事件可以在设计阶段可以将所有的button选中设置它们的onclick事件为同一事件。 或者如下例: 通过设置一组相应控件的TAG属性来实现这一功能。首先在窗体中放置3个BUTTON控件,然后分别设置这三个控件的TAG属性为1、2、3。接下来双击任意一个按钮, 在其代码部分输入如下代码: procedureTForm1.Button1Click(Sender:TObject); begin caseT Button(sender).Tag of 1:ShowMessage(′1stButtonPressed′); 2:ShowMessage(′2ndButtonPressed′); 3:ShowMessage(′3rdButtonPressed′); end; end; 最后在其他两个按钮的ONCLICK事件中选择已经编好的代码。这样一来就可以实现以上功能了。
一句话,"有即是无,无即是有" ...有很多方法实现, wangzn1979(梦郎2001) 说的是一种, 这也是一种:只要TEdit放在同一容器中(Parent相同), 都可以利用以下形式访问(比如Form1是它们的Parent): for iLoop := 0 to Form1.ControlCount - 1 do if Form1.Controls[iLoop].ClassType = 'TEdit' then (Form1.Controls[iLoop] as TEdit).Text := 'A'
这样做是否合适?在Form上放置10个Panel 在private中声名: Panels:array [1..10] of TPanel 然后在OnCreate中这样做: Panels[1]:=Panel1; Panels[2]:=Panel2; ...有没有什么坏处?
Panel1都存在了你还要Panels[1]干嘛?
同意 LKJ99(阳江in深圳,路在何方...)
var DBEdtArray: array[0..100] of TDBEdit; I,J: integer; ///// J := 0; for I := 0 to Self.ComponentCount - 1 do if Self.Components[i] is TDBEdit then begin DBEdtArray[J] := TDBEdit(Self.Components[I]); Inc(J,1); end;
有的,我已经答过好几道这样的题了.如, MyButton: array [0..n] of TButton;
在delphi里。我觉的要按概念来讲是不可能产生同名控件但能够达到这种效果。但是所谓的事件可以在设计阶段可以将所有的button选中设置它们的onclick事件为同一事件。
或者如下例:
通过设置一组相应控件的TAG属性来实现这一功能。首先在窗体中放置3个BUTTON控件,然后分别设置这三个控件的TAG属性为1、2、3。接下来双击任意一个按钮,
在其代码部分输入如下代码:
procedureTForm1.Button1Click(Sender:TObject);
begin
caseT Button(sender).Tag of
1:ShowMessage(′1stButtonPressed′);
2:ShowMessage(′2ndButtonPressed′);
3:ShowMessage(′3rdButtonPressed′);
end;
end;
最后在其他两个按钮的ONCLICK事件中选择已经编好的代码。这样一来就可以实现以上功能了。
一句话,"有即是无,无即是有" ...有很多方法实现, wangzn1979(梦郎2001) 说的是一种,
这也是一种:只要TEdit放在同一容器中(Parent相同),
都可以利用以下形式访问(比如Form1是它们的Parent):
for iLoop := 0 to Form1.ControlCount - 1 do
if Form1.Controls[iLoop].ClassType = 'TEdit' then
(Form1.Controls[iLoop] as TEdit).Text := 'A'
在private中声名: Panels:array [1..10] of TPanel
然后在OnCreate中这样做:
Panels[1]:=Panel1;
Panels[2]:=Panel2;
...有没有什么坏处?
DBEdtArray: array[0..100] of TDBEdit;
I,J: integer;
/////
J := 0;
for I := 0 to Self.ComponentCount - 1 do
if Self.Components[i] is TDBEdit then
begin
DBEdtArray[J] := TDBEdit(Self.Components[I]);
Inc(J,1);
end;
MyButton: array [0..n] of TButton;