-1

假设我正在显示股票价格、体育比分、电影出席率或其他内容。

定期,我将通过 Close() 然后 Open() 刷新链接到其关联数据源的查询的网格。

我知道如何使用 OnDrawCell() 绘制一个单元格 - 我不知道如何知道新值是否与给定单元格的先前值相同或不同。

我想这里有两种用例,一种是行数固定并且它们保持相同的行顺序,另一种是行可以更改(插入/删除或重新排序)。

对于前者,我可以在更新之前拍摄快照并在更新之后进行比较,但这可能是很多数据。我不确定是否要将操作限制为当前可见的行。我认为用户可能想要向下滚动并且仍然会在上次更新期间收到任何更改的通知。

对于后者,我很困惑,当然,除非每一行都有一个唯一的键。

我怎样才能(有效地)做到这一点?TDbGrid 的解决方案对每个人都有帮助,使用 TMS Software 的 TAdvDbGrid 的解决方案对我来说很好(就像(最好是免费的)第 3 方组件一样)。

4

1 回答 1

2

TDBGrid读取当前包含在其分配的数据集中的数据。它无法记住先前的值、执行计算或其他任何事情。如果要跟踪更改,则必须自己进行。您可以通过多种方式(先验值列、历史表或其他方式)来完成此操作,但网格本身无法完成此操作。TDBGrid用于呈现数据,而不是分析或存储数据。

一个建议是使用BeforePost事件在数据集中跟踪它,您可以在其中将您的值存储_oldvalueLastValue列中,然后使用它来查看TDBGrid.OnDrawColumnCell事件中的值是否已更改,并根据需要更改绘图/颜色。类似的东西if LastValue <> CurrValue then...应该可以工作。

于 2013-06-19T02:37:27.703 回答