程序运行时动态生成了多个EDIT,我该怎样在运行时去修改,使得其中每个EDIT的属性变为我想要的值,如第一个EDIT.text:='one';第二个EDIT.text:='two',..........

解决方案 »

  1.   

    可以使用tag属性来作为每个edit的区别标志
    然后遍历控件来设置属性.假设edit都是放在form上的
    var i: integer;
    begin
      for i:= 0 to ComponentCount - 1 do
      if Components[i] is TEdit then
      with Components[i] as TEdit do
      begin
        if tag = 1 then text:= 'one';
      end;
    end;
      

  2.   

    type
    TEditArray = array[0..127] of TEdit;

    var
    EditArray: TEditArray;

    //创建
    for i:=0 to 127 do
    EditArray[i] = TEditArray.Create(Self);

    //释放
    for i:=0 to 127 do
    EditArray[i].Free;

    //引用
    for i:=0 to 127 do
    EditArray[i].Text := IntToStr(i);
      

  3.   

    还是不行啊!运行时动态生成的EDIT,用遍历控件的方法怎么找不到啊!这是什么问题。难道遍历控件的方法,不能发现运行时动态生成控件吗?
      

  4.   

    运行时动态生成的控件如果要用Components属性去遍历查找是可以,但用这种方法必须保证被查找控件是有Parent属性的,而且使用的是相应的Parent对象的Components属性来查找..........所以,你需要把动态生成控件的Parent属性进行指定!如果要对Text属性进行赋值,而且还是表示递增的中文字符,如果数量比较少可以用Tag属性来进行,如果数量大了,这种方法就显的很笨拙了。这里只能通过一个量(可以依然采用Tag属性)来进行转换,至于如何转换楼主自己思考了,我想应该很简单!