是否可以在 Lazarus/Delphi 中添加新行或新列后立即更改 StringGrid 单元格中的文本?

Is it possible to change the text in a StringGrid cell immediately after adding a new row or column in Lazarus/Delphi?

我正在尝试执行:

Form3.StringGrid1.Cells[0,Form3.StringGrid1.RowCount] := 'Hoofdstad'; 

执行后:

Onderdelen := Form3.StringGrid1.RowCount;
Form3.StringGrid1.RowCount := Onderdelen + 1;

每次都报错,说我正在尝试更改(还)不存在的单元格的文本。 我对这门语言还是很陌生,希望有人能帮助我。

Cells 属性 使用基于 0 的索引。第一行的索引是0,最后一行的索引是RowCount-1。添加新行时,RowCount增加,但最后一行的索引仍然是RowCount-1

因此,当您尝试使用此功能时:

Form3.StringGrid1.Cells[0,Form3.StringGrid1.RowCount] := 'Hoofdstad';

您越界了,因为 Form3.StringGrid1.RowCount 1 太高了。您需要改用它:

Onderdelen := Form3.StringGrid1.RowCount;
Form3.StringGrid1.RowCount := Onderdelen + 1;
Form3.StringGrid1.Cells[0, Form3.StringGrid1.RowCount - 1] := 'Hoofdstad';

或者,由于 Onderdelen 已经包含正确的索引值:

Onderdelen := Form3.StringGrid1.RowCount;
Form3.StringGrid1.RowCount := Onderdelen + 1;
Form3.StringGrid1.Cells[0, Onderdelen] := 'Hoofdstad';