如何在Master / Detail数据集中使用TDataSet.DisableControls?

时间:2012-09-01 14:04:14

标签: delphi tdataset

调用TDataSet.DisableControls会禁用主/明细数据集之间的链接。是否有另一种方法可以在不影响主/明细关系的情况下禁用更新数据感知控件?我知道我可以将单个组件的DataSource设置为nil,但这对我来说并不实用。

2 个答案:

答案 0 :(得分:2)

此解决方案假设您使用单独的TDataSource实例来链接UI控件和Master-Detail关系,从设计的角度来看,无论如何都是个好主意。

此解决方案的缺点:这会导致UI中出现一些闪烁。

你可以:

  1. 枚举指向TDataSource个实例但未参与主 - 明细胞关系的所有TDataSet个实例。
  2. 对于每个实例,请保存Enabled属性。
  3. 对于其中每个实例,请将Enabled属性设置为False
  4. 运行您的逻辑
  5. 对于每个实例,请恢复Enabled属性。

答案 1 :(得分:1)

如今,您有一个完美的选择来实现这一目标。如Delphi帮助中所述:

  

如果数据集是主/明细关系的主控,则调用DisableControls也会禁用主/明细关系。滚动浏览数据集时,设置BlockReadSize而不是调用DisableControls会更新详细数据集,但不会更新数据感知控件。