Office中国论坛/Access中国论坛
标题: 【原创 / 源码】Access控件事件配线架(EventsDistributionFrame) 发布贴(当前版 [打印本页]
作者: LucasLynn 时间: 2005-9-15 18:29
标题: 【原创 / 源码】Access控件事件配线架(EventsDistributionFrame) 发布贴(当前版
注意:请下载本贴中最后发布的版本
名称: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编辑过]
作者: cg1 时间: 2005-9-15 18:58
看看先
作者: df 时间: 2005-9-15 19:15
看看先
作者: LucasLynn 时间: 2005-9-15 19:18
名称:EventsDistributionFrame
版本:V 1.01
更新:
根据cg1的建议,加入了根据控件标记(Tag)进行绑定
下载:(OpenSource)
[此贴子已经被作者于2005-9-15 11:18:32编辑过]
作者: tonywong 时间: 2005-9-15 19:45
ok
作者: esmile 时间: 2005-9-15 21:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: LucasLynn 时间: 2005-9-15 21:47
名称:EventsDistributionFrame
版本:V 1.1
更新:
1、修正了1.0和1.01中,用户自定义函数无法送回Cancel参数和Response参数的问题
2、新增了一个用户自定义事件处理应用实例,功能为设定组合框输入的值不在值列表中时,自动添加到值列表。今后将发布更多使用EDF简化程序的应用实例。
3、更完整的程序注释
下载:(OpenSource)
[此贴子已经被作者于2005-9-15 13:53:13编辑过]
作者: hrawea 时间: 2005-9-15 22:39
学习
作者: dasen 时间: 2005-9-15 22:47
学习
作者: yodong 时间: 2005-9-16 05:05
真是历害
作者: smartday 时间: 2005-9-17 21:45
不错,学习一下
作者: dhwx 时间: 2005-9-17 21:53
看看先
作者: LucasLynn 时间: 2005-9-18 03:23
名称:EventsDistributionFrame
版本:V 1.11
更新:
1、将键盘事件中的KeyCode和KeyAscii更改为了指针变量类型,支持写入。
下载:(OpenSource)
作者: LucasLynn 时间: 2005-9-18 05:54
名称:EventsDistributionFrame
版本:V 1.2
更新:
1、采用了新的事件参数写回方法,不再使用指针变量,同时所有事件参数变量均支持写回。(使用方法请参阅示例窗体一)
2、用户自定义事件处理函数中,新增集合参数Attributes,允许用户在事件之间传递自定义参数,保存自定义状态等。(使用方法请参阅示例窗体二)
3、新增示范程序:窗体控件拖动(示例窗体二)
4、更详尽的注释
下载:(OpenSource)
作者: qdjqx 时间: 2005-9-18 08:35
谢谢!
作者: djt 时间: 2005-9-18 18:56
学习
作者: 灵芝 时间: 2005-9-19 11:56
学习
作者: sgrshh29 时间: 2005-9-19 18:28
看看学学
作者: ey1001 时间: 2005-9-20 17:22
up
作者: Grant 时间: 2005-9-21 07:05
嘎嘎,好东西大家学习.
作者: 7777777 时间: 2005-9-24 19:48
学习
作者: tim2004 时间: 2005-9-24 20:27
dd
作者: qxqjdy 时间: 2005-9-25 06:54
学习
作者: fs_jin 时间: 2005-9-25 07:01
好
作者: HIGHOK 时间: 2005-9-25 12:02
ok
作者: 209 时间: 2005-10-7 02:04
收藏了。
作者: binuochao 时间: 2005-10-7 23:12
学习
作者: zhoulin0718 时间: 2005-10-7 23:17
cool
作者: zwl01 时间: 2005-10-9 16:51
真不错,谢谢!
作者: fan0217 时间: 2005-10-22 22:22
学习学习
作者: fan0217 时间: 2005-10-22 22:23
学习
作者: zhangbin 时间: 2005-11-16 18:50
学习
作者: kevinch 时间: 2005-11-16 20:15
看看先
作者: XWQ2000 时间: 2005-11-19 04:45
看看先
作者: 昏昏的无聊 时间: 2005-11-19 05:59
辛苦 了
作者: 120HYH 时间: 2005-11-25 17:36
好了
作者: 小漆 时间: 2005-11-26 00:08
什么东西?
作者: 阿智 时间: 2005-11-26 16:08
T
作者: haliizhu 时间: 2005-11-26 22:25
支持
作者: cqfenglin 时间: 2005-11-26 23:29
[em01]
作者: fengtao666 时间: 2005-12-4 20:36
顶
作者: ksiv 时间: 2005-12-9 03:37
学习
作者: songzhha 时间: 2005-12-9 22:15
学习学习
作者: vipwolf 时间: 2005-12-13 03:58
学习。。。。
作者: qldmcu 时间: 2005-12-15 21:23
好,值得学习
作者: buzhidong 时间: 2005-12-17 05:24
look
作者: boyryan 时间: 2005-12-18 03:44
我也看看了[em01]
作者: gptdjhxhjl 时间: 2005-12-19 02:50
kk
作者: fanren 时间: 2005-12-26 06:40
这就是edf v1.2吗?
作者: rsqy 时间: 2005-12-27 22:11
THANKS GOD!
作者: appleking 时间: 2005-12-30 21:13
[em02][em02]
作者: fanren 时间: 2005-12-30 22:29
能不能只定义一次就可以让项目中的所有窗体都能用(同一个绑定).
作者: schien 时间: 2006-1-4 04:02
看看先
作者: Kerry 时间: 2006-1-5 01:00
新手学习啊!
作者: laiguiyou 时间: 2006-1-9 02:40
look
作者: tanhong 时间: 2006-1-9 19:04
向你学习哦!厉害!
作者: sun.gd 时间: 2006-1-27 19:05
要试1试
作者: ly 时间: 2006-1-27 22:48
正是我学习的地方!
作者: wang1999 时间: 2006-2-3 05:04
标题: 看看
又有一个高手出现了!
感谢您的劳动成果!支持!!!
作者: 5988143 时间: 2006-2-10 07:13
一定的顶
作者: popo559 时间: 2006-2-12 13:16
看看
作者: pckr 时间: 2006-2-13 18:28
不错
作者: 138688 时间: 2006-2-13 20:49
二
作者: yuminmin2003 时间: 2006-2-18 22:14
先看看
作者: zhy2006 时间: 2006-2-22 21:07
好棒
作者: ggjjss 时间: 2006-2-24 00:50
[em01]
作者: 尘埃待落定 时间: 2006-3-28 18:19
看看
作者: wxmin 时间: 2006-3-30 02:47
真是好人啊
作者: lingjiang 时间: 2006-3-30 03:45
学习
作者: xthand 时间: 2006-3-31 04:21
kankan
作者: znzo 时间: 2006-3-31 18:39
zx
作者: lxp100 时间: 2006-4-1 07:57
哦
作者: qlm 时间: 2006-4-2 08:33
学习学习
作者: 石橡 时间: 2006-4-3 02:16
先看后说
作者: zhouyefangzyf 时间: 2006-4-5 01:48
真是大虾
作者: 345337 时间: 2006-4-7 00:09
FCDSF
作者: coolman123 时间: 2006-4-7 00:45
xuexi
作者: sunnyfc 时间: 2006-4-17 03:50
向你学习
作者: syhgxywl 时间: 2006-4-18 22:59
[em05]
作者: lambertQin 时间: 2006-4-19 17:26
xuexi
作者: fortune 时间: 2006-4-24 06:03
不错的DD,看看。
作者: jinpy 时间: 2006-4-25 01:44
谢谢
作者: xinle 时间: 2006-4-28 01:40
kk
作者: 石橡 时间: 2006-5-6 03:58
高,相当地高
可适用性并不很强,比如我只想在窗体里的某一类控件中的某一个控件里搭载edf,其他控件保留其原有事件过程就很难了。
作者: funfun 时间: 2006-5-8 04:54
收藏下来,以后慢慢 学习
作者: 战无不胜 时间: 2006-5-8 18:49
意:请下载本贴中最后发布的版本
作者: LucasLynn 时间: 2006-5-8 23:28
以下是引用石橡在2006-5-5 19:58:00的发言:
高,相当地高
可适用性并不很强,比如我只想在窗体里的某一类控件中的某一个控件里搭载edf,其他控件保留其原有事件过程就很难了。
这种情况下,稍微改动一下代码就可以了。
本来公开源码的目的,就是为了让使用者能够根据自己需要的实际情况来作相应的改进。
另外,事件过程之间是不会冲突的,会发生冲突的,仅仅是和表达式冲突,而所有表达式处理,都是可以用事件过程来代替的,所以保留原有事件过程是完全可行的,只要不直接使用条件表达式或宏来处理事件。
作者: shable 时间: 2006-5-9 00:02
下来看看
作者: 王维a780 时间: 2006-5-9 18:08
fdhgfjhgj
作者: xlonger 时间: 2006-5-27 20:35
dddddd
作者: xlonger 时间: 2006-5-27 20:42
拖动后,控件的位置能保存吗,看例子好像没有保存。
作者: xcyx 时间: 2006-5-27 22:58
看看先
作者: wxmhxq 时间: 2006-5-29 03:33
1111
作者: LucasLynn 时间: 2006-5-29 16:00
以下是引用xlonger在2006-5-27 12:42:00的发言:
拖动后,控件的位置能保存吗,看例子好像没有保存。
本程序面向熟练的Access VBA程序员,不适合新手使用。
作者: stevenzibo 时间: 2006-5-29 16:14
研究一下
作者: duanpeng@ 时间: 2006-6-3 06:33
领会一下
作者: liuxingyuabc 时间: 2006-6-5 00:48
强
作者: lix9188 时间: 2006-6-5 21:31
真是历害
作者: xiaoyouzi5555 时间: 2006-6-6 16:38
先看看吧
作者: 红过刘德华 时间: 2006-6-14 07:03
标题: 支持!
支持!
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |