你看下http://topic.csdn.net/u/20120311/13/f5c32e76-6bb7-495b-a512-0f72f73c2695.html这个就知道components的规律了, 次序如上帖子说的方式调首先:你这个问题可以通过components来做。次序的话如上链接做法循环窗体上的所有控件1: for i := 0 to ComponentCount do begin if components[i] is TDBEdit then begin //TDBEdit(components[i]) //你要操作的代码 end; end; 做法2,panel下面应该有ControlCount属性,现在手头上没有DELPHI,直接在网页上输入的,不知道有没问题,思路是这样了: for i := 0 to panel1.ControlCount do begin if Controls[i] is TDBEdit then begin //TDBEdit(Controls[i]) //你要操作的代码 end; end; for i := 0 to panel2.ControlCount do begin if Controls[i] is TDBEdit then begin //TDBEdit(Controls[i]) //你要操作的代码 end; end;
for i := 0 to ComponentCount do
begin
if components[i] is TDBEdit then
begin
//TDBEdit(components[i])
//你要操作的代码
end;
end;
做法2,panel下面应该有ControlCount属性,现在手头上没有DELPHI,直接在网页上输入的,不知道有没问题,思路是这样了:
for i := 0 to panel1.ControlCount do
begin
if Controls[i] is TDBEdit then
begin
//TDBEdit(Controls[i])
//你要操作的代码
end;
end;
for i := 0 to panel2.ControlCount do
begin
if Controls[i] is TDBEdit then
begin
//TDBEdit(Controls[i])
//你要操作的代码
end;
end;
if Components[i] is TDBEdit then
....
再顶顶,看有没有真正的高手。
但是先放Edit,然后再放panel(注意他们此时的Parent是Form),顺序当然是从edit到panel
若改变了Parent,会重新改变顺序,先放Parent,然后才是Controls里面的控件所以不能根据顺序来判断类型,而是用if Components[i] is TXXX then来判断
TPanel(components[i]).Name出来的应该是Panel才对,但现在前边的限制词不起作用。
delphi这个漏洞真是坑爹啊,本来很容易的事情变得复杂了。
我的问题怎么解决呢?说出来大家肯定会笑话。最后放那几百个DBEdit,使它们能连续。最后再放10个Panel当Label使并且使它们也连续。可恶的Label,当放Label到Form上,再把它拖到Panel上时,它竟然被Panel给掩盖了,不得已只好用Panel代替。
好吧,感谢大家,给分结帖。