通常在我的应用程序中,我有一个地方可以“加载”内存中的数据集(TClientDataSet或DevEx TdxMemData)。在加载它之前,我会这样做:
CDS1.BeforeUpdate := nil;
CDS1.AfterUpdate := nil;
CDS1.AfterPost := nil;..。诸若此类。然后在加载之后(例如,LoadData(CDS1))
CDS1.BeforeUpdate := CDS1BeforeUpdate;
CDS1.AfterUpdate := CDSAfterUpdate;
CDS1.AfterPost := CDS1AfterPost;这非常乏味,特别是因为并不是所有的事件处理程序都是在每个应用程序的每个上下文中分配的,有时我会错过一个在运行时会回来咬我的事件处理程序。
如果我能打电话给你
CDS1.DisableallEventHandlers;
LoadData(CDS1);
CDS1.EnableallEventHandlers; // which were assigned at design-time, that is发布于 2015-11-26 19:41:16
我建议使用DisableallEventHandlers和EnableallEventHandlers方法创建一个类帮助器,而每个方法都使用RTTI枚举事件处理程序属性,并从映射中存储/检索事件处理程序指针。
https://stackoverflow.com/questions/33317979
复制相似问题