是否可以在 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';
我正在尝试执行:
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';