有没有快速方法来禁用/启用所有事件处理程序

时间:2015-10-24 12:05:01

标签: delphi

通常在我的应用程序中,我有一个地方可以加载"内存数据集(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

1 个答案:

答案 0 :(得分:1)

我建议使用方法DisableallEventHandlersEnableallEventHandlers创建一个类助手,而每个方法都使用RTTI来枚举事件处理程序属性,并将事件处理程序指针存储/检索到地图。 / p>