数据敏感的控件(100分)

  • 主题发起人 主题发起人 吴剑明
  • 开始时间 开始时间

吴剑明

Unregistered / Unconfirmed
GUEST, unregistred user!
想知道当DATASET打开/关闭时,数据敏感控件是怎么知道它打开/关闭,来获得数据的?
请讲原理。
 
看看DataSet的源代码啊。

Active->false->SetState(dsInactive)->DataEvent(deUpdateState, 0)->...
 
数据敏感控件要做什么相应的动作?
 
TDataSet内部维护一个TDataSource的列表,记录所有DataSet属性指向自己的DataSource,
设置一个DataSource的DataSet属性时,DataSource会将自己添加到该指定DataSet的DataSource
列表中,或是将自己从该列表中删除。
类似地,TDataSource内部维护一个TDataLink的列表。每一个数据敏感控件内部都有一个
DataLink,设置它的DataSource属性时,控件将自己的DataLink添加到该指定DataSource的
DataLink列表中,或是从列表中删除自己DataLink。
DataSet状态改变时,通知自己DataSource列表中所有的DataSource,DataSource再通知
自己DataLink列表中所有的DataLink,DataLink触发自己的相应的事件,而数据敏感控件
在初始化时已经为内部DataLink的事件设置了一些处理过程,因此,这个逐级通知的过程
最终触发数据敏感控件相应的动作。
 
看一下TDBEdit的控件代码就知道了,数据敏感控件需要一个TDataLink对象。
 
Event/Message
All Things in Windows are based on This way.
 
多人接受答案了。
 
后退
顶部