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