CSVGRIDを使っています。
多分StringGridでも一緒なのかと思うのですが、5×5の表の各列の値の合計値をそれぞれ1つずつグリッドに出したいと考えている(1列目の合計をGrid1に、2列目の合計をGrid2にという感じです)のですが、最近Delphiを始めたばかりでよくわからないので教えていただけると幸いです。よろしくお願いします。
できれば表が完全に埋まっていない場合であっても計算結果がきちんと表示されるとうれしいです。いろいろ話してすみません。。
CSVGRID は知りませんので TStringGrid の場合について回答します。
各列の合計を求める場合のどの部分がわかりませんか?
・数値の文字列を数値に変換する → Val() などが使える。文字列がないときも判断できる
・数値に変換できたら足し算をして和を求める
・それを表示する
例えば、5x5の表は 行が0〜4 列が0〜4 ですから各列の和をその列の6番
目(Rowが5)に表示するには以下のようにします。数値は整数を仮定しています。
また、未記入であってもVal()でOKです。
procedure TForm1.Button1Click(Sender: TObject);
var
iCol,iRow,Sum,value,code:integer;
begin
for iCol := 0 to 4 do begin
Sum := 0;
for iRow := 0 to 4 do begin
Val(StringGrid1.Cells[iCol,iRow],value,code);
if code = 0 then Sum := Sum + value;
end;
StringGrid1.Cells[iCol,5] := IntToStr(Sum);
end;
end;
ツイート | ![]() |