【问题标题】:Grid index out of range on scrolling滚动时网格索引超出范围
【发布时间】:2016-02-16 13:49:27
【问题描述】:

我有这个问题:

我需要在字符串网格中隐藏一行,所以我只是做了类似的事情:

StringGrid.RowHeights[StringGrid.Row] := 0;

所以这基本上将行高设置为 0,它看起来是隐藏的。但是在我这样做之后,如果我尝试滚动,我得到一个“网格索引超出范围”。如果我单击另一个单元格,则滚动后该错误不会出现。所以它只在我隐藏它时显示,然后在隐藏一行后直接滚动。

为什么会发生这种情况,请问我该如何解决?

【问题讨论】:

    标签: tstringgrid


    【解决方案1】:

    你不应该这样做。您可以简单地“跳过”将数据放在要隐藏的行中,而不是将高度设为 0。

    例如,您的表格是这样的:
    a b c
    d e f
    并且您想隐藏第二行,然后说:RowCount:= RowCount-1 并且根本不显示该行中的数据。
    为此,您需要一个过程(我们称之为 RefreshData),它将显示网格中的数据,决定显示或不显示哪些数据行,并计算网格应该有多少行。

    【讨论】:

      【解决方案2】:

      我在尝试修改字符串网格上的 colcount 或 rowcount 时遇到网格索引超出范围错误的问题。我调试了 grid.pas 并发现错误是因为我不小心将负第一列的 ColWidth 属性设置为 -1,如 ColWidth[-1] = -1。这具有修改存储每列宽度列表的数组的一些内存的效果,并且当尝试添加更多时,控件将表现得好像列和行不存在。之所以把这个放在这里是因为我在整个互联网上搜索了答案,但没有任何结果,所以也许其他人会犯同样的错误。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      相关资源
      最近更新 更多