【发布时间】:2021-04-18 13:26:05
【问题描述】:
我有一个程序需要由用户删除单元格中的数据来触发/触发。看起来 ClientDataset.Delete 不适合这种情况。
我的数据结构是:
TADOConnection -> TADOQuery -> TDataSetProvider -> TClientDataSet -> TDataSource -> TDBGRidEh (descendant of TDBGrid)
我是否需要创建一个过程来检测删除,或者是否已经有一个事件或属性可以用于此目的?
【问题讨论】:
-
您是指删除完整记录还是删除字段值(也就是将其设置为空)? TDataset 具有 OnBeforeDelete 和 OnAfterDelete 事件,用于在删除记录之前/之后采取行动。 TDataSource 有一个 OnDataChange 事件来检测字段级别的数据更改(也就是允许您采取行动) - 注意:当用户移动到另一条记录时,也会触发最后一个事件,因此当数据更改时,您应该检查连接的 TDataset 的状态。
-
@R.Hoek 我指的是删除字段值,而不是完整的记录。我已经尝试过 OnBefore/AfterDelete 但没有成功——它甚至在运行时都没有被触及。我不确定 ClientDataSet.Delete 是否在每条记录/行的基础上完成它的工作。但至于 TDataSource 事件,我现在必须研究它。有 3 个事件 OnDataChange、OnSateChange 和 OnUpdateData。我会就此与您联系。
标签: delphi event-handling tclientdataset dbgrid