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