首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

,如何能使TDBEdit(components[i])连续

2012-04-08 
求助,怎么能使TDBEdit(components[i])连续我在窗体中先放2个panel,然后在panel1中放5个DBEdit,再在panel2

求助,怎么能使TDBEdit(components[i])连续
我在窗体中先放2个panel,然后在panel1中放5个DBEdit,再在panel2中放5个DBEdit,那么,TDBEdit(components[1])是panel1,TDBEdit(components[2])才是DBEdit1。最可气的是TDBEdit(components[7])竟然是panel2,难道就没有办法让10个DBEdit的序号连续起来吗?(panel是必须的)
请高手指点,谢谢!

[解决办法]

Delphi(Pascal) code
你看下[url=http://topic.csdn.net/u/20120311/13/f5c32e76-6bb7-495b-a512-0f72f73c2695.html][/url]这个就知道components的规律了, 次序如上帖子说的方式调首先:你这个问题可以通过components来做。次序的话如上链接做法循环窗体上的所有控件1: for i := 0 to ComponentCount dobeginif components[i] is TDBEdit then begin  //TDBEdit(components[i])  //你要操作的代码end;end;做法2,panel下面应该有ControlCount属性,现在手头上没有DELPHI,直接在网页上输入的,不知道有没问题,思路是这样了:for i := 0 to panel1.ControlCount dobeginif Controls[i] is TDBEdit then begin  //TDBEdit(Controls[i])  //你要操作的代码end;end;for i := 0 to panel2.ControlCount dobeginif Controls[i] is TDBEdit then begin  //TDBEdit(Controls[i])  //你要操作的代码end;end;
[解决办法]
探讨
我在窗体中先放2个panel,然后在panel1中放5个DBEdit,再在panel2中放5个DBEdit,那么,TDBEdit(components[1])是panel1,TDBEdit(components[2])才是DBEdit1。最可气的是TDBEdit(components[7])竟然是panel2,难道就没有办法让10个DBEdit的序号连续起来吗?(panel是必须的)
请高手指点……

[解决办法]
你可先用if判断下是不是TDBEdit,是才做该做的操作,不是就不用操作。
if Components[i] is TDBEdit then
....
[解决办法]
再发表下自己的见解:一个在panel1上,一个在panel2上,Components应该是不会完全连续的再怎么说从panel1到panel2上的控件也要经过panel2,请各位老大指教
[解决办法]
探讨
Delphi(Pascal) code
你看下http://topic.csdn.net/u/20120311/13/f5c32e76-6bb7-495b-a512-0f72f73c2695.html这个就知道components的规律了, 次序如上帖子说的方式调

首先:你这个问题可以通过components来做。次序的话如上链接

做法循环窗体上的所有控件1:……

[解决办法]
Components是一个TList管理的,Add时是有顺序的,从0开始,先添加的就排在前面

用了2个panel,其它控件在panel里面,那一定是先添加了panel才轮到里面的控件
但是先放Edit,然后再放panel(注意他们此时的Parent是Form),顺序当然是从edit到panel
若改变了Parent,会重新改变顺序,先放Parent,然后才是Controls里面的控件

所以不能根据顺序来判断类型,而是用if Components[i] is TXXX then来判断
[解决办法]
也可以不用components用Controls循环步骤就会少点

热点排行