我正在编写一个网格控件,它将显示 TDataSet 或 TObjectList 的内容。当你只需要支持 TDataSet 时,事情就很简单了:
- 通过 TDataLink 后代链接到数据集。
- 在绘制网格的内容时,您可以使用缓冲在该 TDataLink 中的记录来绘制您需要的内容。
- 不需要在某处有单独的对象来表示 TDataSet 中的行,因为您总是只在缓冲区中绘制行。
在我的例子中,我还需要接受来自其他几个来源的数据,这意味着我需要一个代表每一行的对象(也因为控件需要相当多的行状态)。
但这会导致上述模型出现问题。因为我有一个代表每一行的对象,所以需要在从 TDataSet 添加或删除记录时通知我。我只是看不出该怎么做。
显然,我不想挂在数据集事件上;它们可能已经在使用中,并且 TDataLink 旨在成为我的控件和数据集之间的中介。我尝试使用 DataEvent 虚拟方法失败了,因为它根本不会告诉您是否正在添加/删除记录。
有任何想法吗?