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

解决方案 »

  1.   

    弄错点。应该TDBEdit(components[0])是panel1,其它以此类推。
      

  2.   

    你看下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;
      

  3.   

    http://topic.csdn.net/u/20120311/13/f5c32e76-6bb7-495b-a512-0f72f73c2695.html次序如这里所说,你可以调整这里
      

  4.   

    你可先用if判断下是不是TDBEdit,是才做该做的操作,不是就不用操作。
    if Components[i] is TDBEdit then
    ....
      

  5.   

    我看调整哪里这10DBEdit也连续不起来。不过,我倒想起一个解决我问题的方法。
    再顶顶,看有没有真正的高手。
      

  6.   

    再发表下自己的见解:一个在panel1上,一个在panel2上,Components应该是不会完全连续的再怎么说从panel1到panel2上的控件也要经过panel2,请各位老大指教
      

  7.   

    Components是一个TList管理的,Add时是有顺序的,从0开始,先添加的就排在前面用了2个panel,其它控件在panel里面,那一定是先添加了panel才轮到里面的控件
    但是先放Edit,然后再放panel(注意他们此时的Parent是Form),顺序当然是从edit到panel
    若改变了Parent,会重新改变顺序,先放Parent,然后才是Controls里面的控件所以不能根据顺序来判断类型,而是用if Components[i] is TXXX then来判断
      

  8.   

    也可以不用components用Controls循环步骤就会少点
      

  9.   

    按理说TDBEdit(components[i]).Name出来的应该是DBEdit,
         TPanel(components[i]).Name出来的应该是Panel才对,但现在前边的限制词不起作用。
    delphi这个漏洞真是坑爹啊,本来很容易的事情变得复杂了。
    我的问题怎么解决呢?说出来大家肯定会笑话。最后放那几百个DBEdit,使它们能连续。最后再放10个Panel当Label使并且使它们也连续。可恶的Label,当放Label到Form上,再把它拖到Panel上时,它竟然被Panel给掩盖了,不得已只好用Panel代替。
    好吧,感谢大家,给分结帖。