关于StringGrid控件使用的有关问题
关于StringGrid控件使用的问题?
我有一个5行6列的StringGrid表格,怎样操作让最后一列的内容等于所对应行的数值之和!如
列1 列2 列3 列4 列5 列6
1 1 1 1 1 5
0 1 0 0 1 2
0 1 1 1 0 3
1 1 0 0 0 2
1 0 0 1 1 3
列6的所对应的值等于列1至列5所在行的数值之和!
------解决方案--------------------
比如,在SetEditText事件中写代码,可以这样:(没有加容错处理,自己加。另外,表格的行列数是按楼主说的)
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
var I : integer;
begin
with TStringGrid(Sender) do
if ACol <> 5 then
begin
Cells[5, ARow] := '0 ';
for I := 0 to 4 do
if Cells[I, ARow] <> ' ' then
Cells[5, ARow] := IntToStr(StrToInt(Cells[5, ARow]) + StrToInt(Cells[I, ARow]));
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I, J : integer;
begin
for I := 0 to 5 do
for J := 0 to 6 do
StringGrid1.Cells[I,J] := '0 ';
StringGrid1.Options := StringGrid1.Options + [goEditing,goAlwaysShowEditor];
end;
至于在“合计”按钮中写代码就简单多了,双重循环就行。
我有一个5行6列的StringGrid表格,怎样操作让最后一列的内容等于所对应行的数值之和!如
列1 列2 列3 列4 列5 列6
1 1 1 1 1 5
0 1 0 0 1 2
0 1 1 1 0 3
1 1 0 0 0 2
1 0 0 1 1 3
列6的所对应的值等于列1至列5所在行的数值之和!
------解决方案--------------------
比如,在SetEditText事件中写代码,可以这样:(没有加容错处理,自己加。另外,表格的行列数是按楼主说的)
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
var I : integer;
begin
with TStringGrid(Sender) do
if ACol <> 5 then
begin
Cells[5, ARow] := '0 ';
for I := 0 to 4 do
if Cells[I, ARow] <> ' ' then
Cells[5, ARow] := IntToStr(StrToInt(Cells[5, ARow]) + StrToInt(Cells[I, ARow]));
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I, J : integer;
begin
for I := 0 to 5 do
for J := 0 to 6 do
StringGrid1.Cells[I,J] := '0 ';
StringGrid1.Options := StringGrid1.Options + [goEditing,goAlwaysShowEditor];
end;
至于在“合计”按钮中写代码就简单多了,双重循环就行。