我正在编写一个网格控件,它将显示TDataSet或TObjectList的内容。当你只需要支持TDataSet时,事情很简单:
就我而言,我还需要接受来自其他一些来源的数据,这意味着我需要有一个表示每一行的对象(也因为控件需要相当多的行状态)。
但这会导致上述模型出现问题。因为我有一个表示每一行的对象,所以我需要在TDataSet中添加或删除记录时得到通知。我只是看不出怎么做。
显然,我不想挂钩数据集事件;它们可能已经在使用中,而TDataLink应该是我的控件和数据集之间的中介。我尝试使用DataEvent虚拟方法失败了,因为它根本不会告诉您是否添加/删除了记录。
有什么想法吗?
答案 0 :(得分:1)
如果将TDataLink后代挂钩到连接到TDataSet的TDataSource,则在数据更改时会在RecordChanged过程中调用。
您可以使用连接到TDataSet的TDataSource的事件OnDataChange和OnUpdateData。
答案 1 :(得分:0)
看来,您必须从要使用的基础数据集类派生自己的类。在那里,您将需要覆盖InternalAddRecord,InternalPost,InternalDelete方法并处理记录添加/删除。