form上有25个EDIT控件,命名如下:edit11....edit15
    ...
edit51....edit55如何设置edit[i]1...edit[i]5的值?i是程序中生成的

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      C : Char;
      P : Pointer;
      I : Char;
    begin
      C := '5';
      for I := '1' to '5' do
        begin
        P := FieldAddress('Edit'+C+I);
        if P<>nil then TEdit(P^).Text := 'OK';
        end;
    end;
      

  2.   

    上面代码中C的值就是 你说的 edit[i]1...edit[i]5 中 的 i 的值. 你自己再根据实际需要重写一下代码吧.总之就是用 FieldAddress返回成员的指针.
      

  3.   

    TEdit(FindComponent('Edit' + IntToStr(i) + '1')).Text := 'TEXT';
      

  4.   

    Delphi不支持反射
    可以用RTTI来实现这个类似的效果具体是用RegisterClasses和GetClass这两个函数
      

  5.   

    补充一下sdzeng(大头鸟),要加上{M+}开关
      

  6.   

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

  7.   

    Delphi不支持反射,不象JAVA那样但可以通过循环检查Edit所在容器的控件个数,再判断是否TEdit后付值,但要注意控件的摆放顺序还有可以考虑利用一下控件的属性
      

  8.   

    还有可以考虑利用一下控件的Tag属性
      

  9.   

    lihuasoft(我业余,所说仅供参考) 
    所说经实践可行,等我有空就结贴~
    谢谢各位!