最好是动态创建的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;
:
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;
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;
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;
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 }
是否用一个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;
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;
总体思路我已清楚了就是调用FindComponent函数来搜索控件。然后再求和。
来者各式各样20分.