以编程方式突出显示stringgrid行

时间:2013-04-06 13:04:06

标签: 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;

这将很好地选择网格上的行(突出显示),但问题是

 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)为真,所以错误

如何选择最后一行?

1 个答案:

答案 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