实际设计中遇到一个问题,窗体中有20多个同类控件,一一写代码赋值,操作太麻烦,是否有更简洁的方法历遍同类控件。eg:有十个edittext控件 如果将值赋值给数组 a[1..10] ?

解决方案 »

  1.   

    var
      i: integer;
    begin
      for i := 0 to Self.ComponentCount - 1 do
        if Self.Components[i] is TEdit then
        begin
          //在此处理你想要的
          TEdit(Self.Components[i]).Text :='Edit'+IntToStr(i);
        end;
    end;
      

  2.   

    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
          showmessage('edit'+inttostr(i+1));
      end;
    end;
      

  3.   

    eg:有十个edittext控件 如果将值赋值给数组 a[1..10] ?不知道是不是你想要的答案:
    var
      a:array[1..10]of TEdit;
      i,index: integer;
    begin
      index:=1;
      for i := 0 to Self.ComponentCount - 1 do
        if Self.Components[i] is TEdit then
        begin
          //在此处理你想要的
          a[index]:=TEdit(Self.Components[i]);
          a[index].Text :='Edit'+IntToStr(i);
          inc(index);
        end;
    end;
      

  4.   

    呵呵
    都知道啊!
    主要用了
    ComponentCount与Components[i]
      

  5.   

    var
      i: integer;
    begin
      for i := 0 to Self.ComponentCount - 1 do
        if Self.Components[i] is TEdit then
        begin
          (Self.Components[i] as TEdit).Text :='Edit'+IntToStr(i);
        end;
    end;