1、Form.FindComponent
2、将Find到的Component做is TEdit运算,如果结果为True
则把它的.Text加起来!具体实现,看你自己的了

解决方案 »

  1.   

    注意放置时的TabOrder顺序。procedure TForm1.Button1Click(Sender: TObject);
    var ii: Integer;
        sStr:WideString;
    begin
      for ii := 0 to Form1.ControlCount - 1 do
      begin
        if Form1.Controls[ii] is TEdit then
          sStr := sStr + TEdit(FindComponent(Form1.Controls[ii].Name)).Text;
        if Form1.Controls[ii] is TComboBox then
          sStr := sStr + TComboBox(FindComponent(Form1.Controls[ii].Name)).Text;
      end;
    end;
      

  2.   

    使用tcomponent的components属性:
    var 
    i:integer;
    str:string;
    begin
    for i:=0 to form1.componentcount-1 do
      begin
         if components[i].classname:=tedit then
          str:=str+components[i].text;
         if .....
       if 
        
    end;有些方法可能用使用错误具体的,你自己查帮助吧。
      

  3.   

    如果你的控件是设计时放到Form上的话,用一条语句把它们的Text加在一起也没什么不好.
    如果控件是运行时创建的那就把它们放到数组或List里吧.
    或者自己作一个非可视控件,带一个TComboxLinkCollection和一个TEditLinkCollection的Publish属性和一个生成字符串的方法……
      

  4.   

    如果不是他的Form上的所有Edit都相加呢?可以利用控件的Tag属性,在这里设置一个范围,然后对组件数组中的所有满足这个条件的Tag的Edit的Text相加就可以了。
      

  5.   

    a:Tcomponent;
    b:integer;
      a:=findcomponent('combobox'+inttostr(i));
       if assigned(a) then
        b:=b+strtoint(tcombobox(a).text);
      

  6.   

    使用as is么。先用is判断,再用as做类型转换。
    function addall:String;
    var
      i:integer;
    begin
      for i:=0 to self.componentcount-1 do
      if self.components[i] is tedit then
        result:=result+(self.components[i] as tedit ).text;      
    end;