如何确定何时在TDataSet中插入记录?

时间:2011-01-11 07:58:10

标签: delphi tdataset data-aware

我正在编写一个网格控件,它将显示TDataSet或TObjectList的内容。当你只需要支持TDataSet时,事情很简单:

  1. 通过TDataLink后代链接到数据集。
  2. 在绘制网格内容时,您可以使用该TDataLink中缓冲的记录来绘制您需要的内容。
  3. 不需要在某个地方有单独的对象来表示TDataSet中的行,因为您总是只绘制缓冲区中的行。
  4. 就我而言,我还需要接受来自其他一些来源的数据,这意味着我需要有一个表示每一行的对象(也因为控件需要相当多的行状态)。

    但这会导致上述模型出现问题。因为我有一个表示每一行的对象,所以我需要在TDataSet中添加或删除记录时得到通知。我只是看不出怎么做。

    显然,我不想挂钩数据集事件;它们可能已经在使用中,而TDataLink应该是我的控件和数据集之间的中介。我尝试使用DataEvent虚拟方法失败了,因为它根本不会告诉您是否添加/删除了记录。

    有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果将TDataLink后代挂钩到连接到TDataSet的TDataSource,则在数据更改时会在RecordChanged过程中调用。

您可以使用连接到TDataSet的TDataSource的事件OnDataChange和OnUpdateData。

答案 1 :(得分:0)

看来,您必须从要使用的基础数据集类派生自己的类。在那里,您将需要覆盖InternalAddRecord,InternalPost,InternalDelete方法并处理记录添加/删除。