最好是动态创建的EDIT控件组,

For i=1 to 10 do
begin
NumEidt[i]:=tMaskedit.create;
Numedit[i].parent:=yourform;
...//设定位置,Mask等属性;
end;求和时就可以
n:=1;
sum:=0;
for i:=1 to 10
begin
if NUmedit[i].text<>'' then
begin
sum:=strtofloat(Numedit[i].text);
n:=n+1;
end;
if n<yourN then showmessage('no enough number inputed');
end;

解决方案 »

  1.   

    function AddAll(const inum : integer):double;
    var
      i : integer;
      tmpresult : double;
    begin
      for I := 1 to inum do
      begin
        if Tedit(findcomponent('edit' + inttostr(i))).text <> '' then 
          tmpresult := tmpresult + inttofloat(Tedit(findcomponent('edit' + inttostr(i))).text);
      end;
      result := tmpresult;
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
      R: Real;
      vComponent: TComponent;
    begin
      R := 0;
      for I := 1 to 7{N} do begin
        vComponent := FindComponent('Edit' + IntToStr(I));
        if Assigned(vComponent) then
          R := R + StrToFloatDef(TEdit(vComponent).Text, 0);
      end;
      Caption := FloatToStr(R);
    end;
      

  3.   

    //如果是Delphi5没有StrToFloatDef()就用
    function StrToFloatDef(mStr: string; mDefault: Real): Real;
    var
      R: Real;
      C: Integer;
    begin
      Val(mStr, Result, C);
      if C <> 0 then Result := mDefault;
    end; { StrToFloatDef }
      

  4.   

    我个人认为从软件开发的角度来说,
    是否用一个TList来控制会不会比较好一些,也比较灵活一些呢?当然了也可以用数组等等来控制!
    我想作为软件开发者,我们不能想当然的认为需要求和的就是前面的依次n个,如果要求改变是不是就得重写代码呢?
    这只是我的浅薄之见,还望各位前辈指教!procedure TForm1.Button3Click(Sender: TObject);
    var
      res : double;
    begin
      listEdits := TList.Create;
      listEdits.Add(edit1);
      listEdits.Add(Edit2);
      listEdits.Add(edit3);
      res := AddEdits(listEdits);
      ShowMessage(floattostr(res));
      FreeAndNil(listEdits);
    end;function TForm1.AddEdits(const list: TList): double;
    var
      i : integer;
    begin
      result := 0;
      if (list<>nil) then
      begin
        for i:=0 to list.Count-1 do
        begin
          if (TEdit(list.Items[i]).Text <>'' )then
           result := result + strtofloat(TEdit(list.Items[i]).Text);
        end;
    end;
      

  5.   

    function EditSum(mComponent: TComponent; mCount: Integer): Real;
    var
      I: Integer;
      vComponent: TComponent;
    begin
      Result := 0;
      for I := 1 to mCount do begin
        vComponent := mComponent.FindComponent('Edit' + IntToStr(I));
        if Assigned(vComponent) then
          Result := Result + StrToFloatDef(TEdit(vComponent).Text, 0);
      end;
    end; { EditSum }procedure TForm1.Button1Click(Sender: TObject);
    begin
      Caption := FloatToStr(EditSum(Self));
    end;
      

  6.   

    谢谢各位!
    总体思路我已清楚了就是调用FindComponent函数来搜索控件。然后再求和。
    来者各式各样20分.