i:=0;
  while i<29 do
  begin
        person1.Caption:=dbgrid1.Fields[i].asstring;
      //person[i].caption:=dbgrid1.fields[i].asstring;想这样实现就是一个标签对应着一个字段,然后字段有29个标签也有29个.如果要这样实现的话是不是要遍容器里的所有控件?有没有例子呢??29个标签在panel1上面
        i:=i+1;
  end;

解决方案 »

  1.   

    你要想实现这种功能,可以动态的建立标签,有29条纪录建立29个标签,30个纪录建立30个标签。你若想直接给已经存在的标签赋caption值,那么你就要统一一下标签的名称(这样在赋值的时候才可以知道给哪个标签赋值),但是已经存在的标签数就定死了,如果有30个标签,那么31条纪录的情况下就少了一个标签;29条纪录的情况下就多了一个标签^&^
      

  2.   

    先设置label组件的Tag属性,设置好后使用下面的代码var
     Num:integer;
     i:integer;
    begin
    for num:=0 to gb_yxsgkxx.controlcount-1 do
     if gb_yxsgkxx.controls[num].ClassName='TLabel' then
      for i:=0 to dbgrid1.recordcount-1
         if (gb_yxsgkxx.controls[num] as TLabel).tag=i then
           begin
           (gb_yxsgkxx.controls[num] as TLabel).caption:=dbgrid1.Fields[i].asstring;
           break;
           end;