读取和操作 TStringGrid 中的值

Read and manipulate values in a TStringGrid

我有一个如下所示的 StringGrid:

+----------+----------+----------+----------+----------+
| FixedRow | FixedRow | FixedRow | FixedRow | FixedRow |
+----------+----------+----------+----------+----------+
| Data     | Data     | Data     | 100      | Data     |
+----------+----------+----------+----------+----------+
| Data     | Data     | Data     | 158      | Data     |
+----------+----------+----------+----------+----------+
| Data     | Data     | Data     | 1002     | Data     |
+----------+----------+----------+----------+----------+

StringGrid 可以有任意数量的行,我想在 Timer 的滴答事件中找到第 4 列中每个单元格的值并将其值减 1。

如何以这种方式读取和操作 TStringGrid?

这很简单。

简单遍历数据(non-header)行,对于每一行,获取第四列的值,将其转换为整数,减少它,将其转换回字符串,并设置该字符串的单元格值。

由于你没有固定的列,所有的列都是数据列。它们的索引为 0、1、2、3、4,因此第四个索引为 3。

由于您固定的 (header) 行,因此这些行的索引为 0、1、2,...,N − 1,数据行为 1, 2, ..., N − 1.

procedure TForm1.Timer1Timer(Sender: TObject);
var
  y: Integer;
  Val: Integer;
begin
  for y := 1 to StringGrid1.RowCount - 1 do
  begin
    Val := StrToInt(StringGrid1.Cells[3, y]);
    Dec(Val);
    StringGrid1.Cells[3, y] := Val.ToString;
  end;
end;