繁体   English   中英

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

[英]How do I determine when a record is inserted in a TDataSet?

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

  1. 通过TDataLink后代链接到数据集。
  2. 绘制网格内容时,可以使用该TDataLink中缓冲的记录来绘制所需的内容。
  3. 不需要在某处有单独的对象来表示TDataSet中的行,因为您总是只在缓冲区中绘制行。

就我而言,我还需要接受来自其他一些来源的数据,这意味着我需要有一个代表每一行的对象(也是因为控件需要相当多的行状态)。

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

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

有任何想法吗?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM