比如有一百个控件:Edit1,Edit2,...100:现在我想用一个循环来给一百个控件赋同一个值:
我是这样写的(当然是错的)procedure save(.....);
var test:String;
    control:String;
  begin
       test:='123';
        for(int i:=1;i<=100,i++)
        begin
             control:='Edit'+inttostr(i);
             control.text:=test;//运行结果提示该行出错;
        end;
  end;

解决方案 »

  1.   

    var i:integer;
    begin
      for i:=1 to 3 do
        TEdit(FindComponent('Edit'+inttostr(i))).Text:=inttostr(i);
    end;
      

  2.   

    >>for(int i:=1;i<=100,i++)这个...
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    VAR
      I: Integer;
    begin
      for i := 0 to Form1.ComponentCount - 1 do
      begin
        if Form1.Components[i] is TEdit then
        begin
          TEdit(Form1.Components[i]).Text := 'aa';
        end
      end
    end;
    我试过了的
      

  4.   

    这样写:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
      e : TEdit;
    begin
      for i := 0 to self.ControlCount - 1 do
        if self.Controls[i] is TEdit then
        begin
          e := self.Controls[i] as TEdit;
          e.Text := '123';
        end;
    end;
      

  5.   

    var i:integer;
    begin
      for i:=1 to 3 do
        TEdit(FindComponent('Edit'+inttostr(i))).Text:=inttostr(i);
    end;
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject);
    VAR
      I: Integer;
    begin
      for i := 0 to Form1.ComponentCount - 1 do
      begin
        if Form1.Components[i] is TEdit then
        begin
          TEdit(Form1.Components[i]).Text := 'aa';
        end
      end
    end;
      

  7.   

    谢谢各位了,小弟没用过Delphi都是用JAVA现在急着用,谢谢了,
      

  8.   

    var i:integer;
    begin
      for i:=1 to 100 do
        (Form1.FindComponent('Edit'+IntToStr(i)) as TEdit).Text:='你需要的值';
    end;
      

  9.   

    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];~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    http://community.csdn.net/Expert/topic/3706/3706098.xml?temp=.6325189
      

  10.   

    定义一个控件数组不就行了。
    var
    editlist:array of tedit;
    begin  
    setlength(editlist,100);
    for i:=0 to 99 do 
      begin
        editlist[i]:='edit'+inttostr(i);
      end;
    for i:=0 to 99 do
        editlist[i]:='123';end;
      

  11.   

    procedure TForm1.Button1Click(Sender: TObject);
    VAR
      I: Integer;
    begin
      for i := 0 to Form1.ComponentCount - 1 do
      begin
        if Form1.Components[i] is TEdit then
        begin
          TEdit(Form1.Components[i]).Text := 'aa';
        end
      end
    end;
      

  12.   

    上面的兄台提到的方法可以的:===========================================================================
    var i:integer;
    begin
      for i:=1 to 100 do
        (Form1.FindComponent('Edit'+IntToStr(i)) as TEdit).Text:='你需要的值';
    end;
    ===========================================================================
      

  13.   

    首先你必須循環所有的Edit控件!如果你想將所有的edit賦一個值的話那麼只需直接給值即可!
    如查你想循環的從別的循環中得值,那需寫另一個循環!