如何获得stringgrid某列的各行累加值(30分)

  • 主题发起人 主题发起人 pengshaopeng
  • 开始时间 开始时间
P

pengshaopeng

Unregistered / Unconfirmed
GUEST, unregistred user!
需要在stringgrid中得到某列各行值的相加总值,如何实现?
 
stringgrid的每一个列都是TStrings类型
现在求第一列的各行值的相加总值
var
i,s:Integer;
begin
for i := 1 to StringGrid1.Cols[1].Count-1 do
begin
s:=s + StrToInt(StringGrid1.Cols[1]);
end;
end;

 
expect:
这种方法好象行不通
 
急,请各路大虾伸出援助之手,需要在stringgrid中得到某列各行值的相加总值(即:某列
的第1行加第2行加第3行.....加第n行,如何实现?
 
var
i,s,j:Integer;
begin
for i := 1 to StringGrid1.ColCount-1 do
begin
try
j := StrToInt(StringGrid1.Cells[1,i]);
//如是小数则用StrToFloat, 如是其他格式则数值转换则自已来完成吧
except
j := 0;
end;
s:=s + j;
end;
end;
 
to pengshaopeng,
expect的方法行的通,不过有点错误而已,Cols[1].Count是错的
 
turborabbit:
你的方法也行不通,我想将累加结果赋值给edit.text,如何实现?
 
var
i:longint;
thesum:currency;
begin
thesum:=0;
for i := 1 to StringGrid1.rowcount-1 do
begin
thesum:=thesum + StrToCurr(StringGrid1.Cols[1]);
end;
edit1.text:=CurrToStr(thesum);
end;
 
在字符/数值转换中,最好另外定义一些函数处理转换异常,如:
Function StrToCurrDef(const s:String;defVal:Currency):Currency;
begin
//可以这样写
{
if not TextToFloat(PChar(S), Result, fvCurrency) then Result := defVal;
{}
//也可以这样写
{
try
Result := StrToCurr(s);
except
Result := defVal;
end;{}
end

你要是想省事,就直接使用TADVStringGrid,(在小朱的站上有。TMSPackage)
如果想提高操纵TStringGrid的编程技巧,同样建议你拿TADVStringGrid的源代码来看看。
 
Agree LGXing
 
谢谢各位仁兄
 
后退
顶部