我在Delphi 7中有一个字符串网格,有0..N行。有一个列表框,其数字从0..N开始 如果用户单击列表框号中的任意数字,则应在stringgrid上选择该行号。
所以我有这个
MystringGrid.Col :=0;
MystringGrid.Row :=Listbox.itemindex;
MystringGrid.Selection:=TGridRect(Rect(0,1 ,1 ,1));
MystringGrid.SetFocus;
这将很好地选择网格上的行(突出显示),但问题是
listbox.itemindex=MystringGrid.rowcount;
那次我得到了
Grid Index out of range error
在grids.pas中
if (ACol < 0) or (ARow < 0) or (ACol >= ColCount) or (ARow >= RowCount) then
InvalidOp(SIndexOutOfRange)
(ARow >= RowCount)
为真,所以错误
如何选择最后一行?
答案 0 :(得分:5)
如果有3
行,则称为
0, 1, 2.
请注意,没有名为3
的行。
更一般地说,如果有N
行,则称为
0, 1, 2, ..., N - 1.
请注意,没有名为N
的行。
因此,您的问题可以在问题的第一行找到:
我[原文如此!]在Delphi 7中有一个字符串网格,有N行。有一个列表框 数字来自0..N
如果有N
行,则列表框应包含数字0..N-1
。实际上,如果你让它包含数字0..N
,那么列表框中的行数将等于N+1
,即比字符串网格中的项目数多一个。
另外:我只是做
StringGrid1.Selection := TGridRect(Rect(0, 3, 4, 3))
选择索引为3
的行,假设列数为4+1