首先感谢大家来帮忙!!!问题是这样的: 
现在有20个字符串:str1,str2……str19,str20,要分别赋给edit1.text,edit2.text……edit19.text,edit20.text,如果用一条循环语句该怎么写呢?我是这样写的:
for i:=1 to 20 do
begin
  eidti.text:=stri;
  i:=i+1;
end;
eidti.text:=stri明知道这一句肯定不对,可是不知道该怎样去表达,请大家帮忙修改一下!感谢~~

解决方案 »

  1.   

    var
      I: Integer;
      Str: array [1..20] of string;
    begin
      for I := 1 to 20 do
      begin
        (TEdit(FindComponent(Format('Edit%d', [I])))).Text := Str[I];
      end;
      

  2.   

    方法:使用FindComponent按名字查找控件,然后将查找到的控件,并判断是否是Tedit,然后转换为Tedit,并赋值text属性。
      

  3.   

    其实是这样的:
    procedure TFormdata.datachangeClick(Sender: TObject);
    var
      card,date:string;
      str:array[1..10]of string;
      i,k:integer;
    begin
      card := formgongtu.DBEdit1.Text;
      date := formgongtu.DBEdit2.Text;
      begin
        formgongtu.ADOQuery1.Close;
        formgongtu.ADOQuery1.SQL.Clear;
        formgongtu.ADOQuery1.SQL.Add('select * from 工图 where 卡号 = "'+ card +'" and 日期="'+ date +'"');
        formgongtu.ADOQuery1.Open;
        k := formgongtu.ADOQuery1.FieldValues['总数'];
        edit6.Text:=inttostr(k);    for i := 0 to k-1 do
        begin
        formgongtu.ADOQuery1.Close;
        formgongtu.ADOQuery1.SQL.Clear;
        formgongtu.ADOQuery1.SQL.Add('select * from 工图 where 卡号 = "'+ card +'" and 日期="'+ date +'" and 顺序 =i ');
        formgongtu.ADOQuery1.Open;
        str[i] := formgongtu.ADOQuery1.FieldValues['data'];
        (TEdit(FindComponent(Format('Edit%d', [I])))).Text := str[i];
        end;
      end;
    end;
    我是想把数据库里data字段的数据提取出来,我这段代码有错误吗?怎么编译时没有错误,运行时也行,可是一点击datachange按钮就会弹出一个错误对话框说i参数没初值之类的,我就又在代码里加了一句i:=0,可还是不行,请大家帮忙分析一下,谢谢!!
      

  4.   

    formgongtu.ADOQuery1.SQL.Add('select * from 工图 where 卡号 = "'+ card +'" and 日期="'+ date +'" and 顺序 =i ')这句错了? 把i放进字符串里了... 这样改改看: formgongtu.ADOQuery1.SQL.Add('select * from 工图 where 卡号 = "'+ card +'" and 日期="'+ date +'" and 顺序 =' + IntToStr(i))