注意:请下载本贴中最后发布的版本
名称:EventsDistributionFrame
版本:V 1.0
简介:
在对窗体控件事件编程的时候,我经常为要写许多类似或相同的代码不停粘贴而感到头痛,记得以前公司综合布线的时候,把上百门电话和几百根网线插到配线架上,通过跳线进行集中管理,如果事件编程也能象配线架一样集中管理,那么我的编程将会轻松很多,代码也会更加容易维护,于是就有了写这个程序的初衷。
本程序针对大量的窗体控件事件编程而设计,可以批量集中分类处理窗体/控件事件(例如一个控件的多个事件,或多个控件的同一事件),支持各种不同的事件分类方式,尤其适用于较复杂的界面事件编程。
本程序从本人之前发布的EventsHub发展而来,最重大的改进即是支持了事件参数。使得编程人员已经可以完全抛弃传统的窗体事件编程方式。
本程序面向熟练的Access VBA程序员,不适合新手使用。
使用说明:
程序源码中包含一个调用范例,以及各个函数的参数详细注释,这里仅对原理进行阐述:
1、首先必须在窗体代码中创建两个空的集合对象,如范例中的:
Dim edfCtls As New Collection
Dim edfPorts As New Collection
2、在Form_Load中进行事件定义和端口定义,如范例中的:
Public Sub Form_Load()
edfInitEvents edfCtls, edfPorts, Me, 0, acComboBox, edfHookChildren
edfInitEvents edfCtls, edfPorts, Me, 1, acTextBox, edfHookChildren
edfInitEvents edfCtls, edfPorts, Me, 1, acListBox, edfHookChildren, "MyList"
edfInitPorts edfPorts, AddressOf CustomFuncSample, 0
edfInitPorts edfPorts, AddressOf CustomFuncSample2, 1
End Sub
edfInitEvents函数对于事件进行定义,edfPorts函数对于端口进行定义,每个端口允许指定多组事件,但是只允许指定一个处理函数。具体的调用参数说明请查阅源码中的注释说明。
3、自定义事件处理函数,如范例中的:
Public Sub CustomFuncSample(ByRef acCtl As Control, ByRef strEvent As String, ByRef Params As Collection, ByRef reserved As Long)
Dim i As Variant
Debug.Print acCtl.ControlName & "_" & strEvent;
For Each i In Params
Debug.Print " " & i;
Next i
Debug.Print
End Sub
自定义处理函数将被指定端口上发生的所有事件调用,每个端口通过edfInitPorts指定一个自定义处理函数。事件参数被包含在Params集合中,具体的参数说明请查阅源码中的注释说明。范例中的自定义处理函数功能为将事件描述输出到立即窗口。
4、本程序仅适用Access的19种标准控件(包括2种无事件控件)
程序下载:(OpenSource)
[此贴子已经被作者于2005-11-3 9:07:39编辑过]
|