如何把50个数组的内容赋给50个Tedit
比如:
 edit1.text:=buf[1];
 edit2.text:=buf[2];
 edit3.text:=buf[3];
 edit4.text:=buf[4];
......................
我总不能写50句吧。
怎么循环啊?谢谢

解决方案 »

  1.   

    var
      I:integer;
      //varEdit:TEdit;
      EditName:String;
    begin
      EditName := 'Edit';
      for I :=1 to 50 do
      begin
        TEDIT(EditName+IntToStr(I)).Text := Buf[I]; 
      end;end;试一下,我没有测试,应该差别不大的。。呵呵
      

  2.   

    for i := 1 to 50 do
        TEdit(FindComponent('Edit' + IntToStr(i))).Text := buf[i];
      

  3.   

    For i:=0 to ComponentCount-1 Do
               begin
               if Components[i] is TEdit then (Components[i]as TEdit).Text=buf[i];
    //////循环遍历窗体里面每一个Edit
      

  4.   

    建立控件数组啊。不过在建立时一般还是要一个个的联系上去。
    不过以后使用就方便了。
    type TarrEdit=array[1..50] of Tedit;
    var arrEdit:TarrEdit;
    begin
      arrEdit[1]:=edit1;
      arrEdit[2];=Edit2;
      ....
    end;  以后使用就可以
    for i:=1 to 50 do
      arredit[i]:=buf[i];
    特殊情况下,如果你的edit1-50的排列是有规律的。
    你可以用
    j:=0;
    for i:=0 to form1.ControlCount-1 do
       if self.Controls[i] is tedit then
          begin
            j:=j+1;
            arrEdit[j]:=self.Controls[i] as tedit;
          end;
    这样就简单了。
      

  5.   

    var tmpedt:TEdit;    for i := 1 to 50 do
        begin
            tmpedt:=TEdit(FindComponent('Edit' + IntToStr(i)));
            tmpedt.Text:= buf[i];
        end;
      

  6.   

    gxgyj(杰克.逊) ( ) 信誉:94 
    你的代码不对
    Components的第i个控件不一定就是Edit[i],如果Form上有别的控件的话
    我朋友犯过类似的错误,我帮他改过来的 (不知脸红偷笑中……)
      

  7.   

    for i := 1 to 50 do
        TEdit(FindComponent(format('Edit%d',[i])).Text := buf[i];
      

  8.   

    ahuige(灰不遛秋(前半身学医后半身学统计)) ( ) 信誉:99 
    你的代码后半部分
    j:=0;
    for i:=0 to form1.ControlCount-1 do
       if self.Controls[i] is tedit then
          begin
            j:=j+1;
            arrEdit[j]:=self.Controls[i] as tedit;
          end;
    pascal不跟c一样可以在循环内对改变循环变量值的,而且self.Controls[i]的问题跟杰克一样
    结论:阿飞正解
      

  9.   

    for i := 1 to 50 do
        TEdit(FindComponent('Edit' + IntToStr(i))).Text := buf[i];
      

  10.   

    For i:=0 to ComponentCount-1 Do
      if Components[i] is TEdit then (Components[i]as TEdit).Text:=buf[i];
      

  11.   

    for i := 1 to 50 do
        TEdit(FindComponent('Edit' + IntToStr(i))).Text := buf[i];
    這個正解~
      

  12.   

    hellolongbin(一个人) ( ) 信誉:100 
    一个人老兄,呵呵,看清楚,一个是i,一个是j.
    不过我的办法比较笨,二年没用delphi,生疏了。
      

  13.   

    sorry,眼花了,呵呵
    不好意思
      

  14.   

    For i:=0 to ComponentCount-1 Do
      if Components[i] is TEdit then (Components[i]as TEdit).Text:=buf[i];
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    for i:=0 to ComponentCount-1 Do
        TEdit(FindComponent('Edit' + IntToStr(i))).Text := buf[i];~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    两个都行......^_^  
      
      

  15.   

    我想找第二个窗体的EDIT,在上面加了一句FORM2,但没成功for i:=0 to ComponentCount-1 Do
        TEdit(FindComponent('Form2.Edit' + IntToStr(i))).Text := buf[i];
      

  16.   

    gxgyj(杰克.逊) 你还是没明白我的意思,这样吧,新建一个工程,先放几个其他控件如memo button之类,然后放5个Edit,,然后在其中一个button的click事件加上你的代码:
    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
        For i:=0 to ComponentCount-1 Do
      if Components[i] is TEdit then (Components[i]as TEdit).Text:=inttostr(i);
    end;
    试试看
      

  17.   

    不是啊,老大,我现在有两个窗体,我想在Form1中找Form2上的窗体的EDIT,你们的语句都对,我现在是想找另一个窗体的EDIT,谢谢。
      

  18.   

    form1中引用FORM2单元。
    with form2 do
     beign
      在用上面的~~循环,不知道 是不是~你想要的。
     end;
      

  19.   

    对,我就那个意思,我试试form1中引用FORM2单元。
    with form2 do
     beign
      在用上面的~~循环,不知道 是不是~你想要的。
     end;
      

  20.   

    哈哈,想不到gxgyj(杰克.逊) 老大也犯了一个低级的小错误了。