Office中国论坛/Access中国论坛

标题: 问个关于窗体事件的问题,怎么才能在程序中设置事件? [打印本页]

作者: excessstone    时间: 2011-8-25 19:10
标题: 问个关于窗体事件的问题,怎么才能在程序中设置事件?

一个窗体事件,比如form_load,在设计模式下,属性窗口中的事件标签里选择事件过程,也就是VBA。
此时,该事件属性里的内容是 “事件过程”。打开窗口时,Form_load就运行。
如果把该事件属性里的内容删除,那么即使Form_load函数体还在,那么也不会被执行。
大概可以理解为,系统没有把该函数体和该事件联系在一起。
问题是:能不能在程序中实现这种联系?
比如一个按钮,在需要的时候设置点击事件有效,甚至可以动态转换点击事件调用的函数。
作者: tmtony    时间: 2011-8-25 19:59
很简单。
设置me.Onload="你的函数名()" 即可
你的函数名为你在窗体上设置 好的一个函数
作者: excessstone    时间: 2011-8-25 20:13
没看懂,比如我的窗体VBA代码如下:
Private Sub Form_Load()
    msgbox "OK  1"
End Sub
那么我打开窗体时,显示“ok”
现在我加一个过程
sub test()
    msgbox “OK 2”
end sub
那么那条me.Onload="test()"加到哪里?
是这样吗?
Private Sub Form_Load()
   me.Onload="test()"
End Sub
我试了没出错,也没显示“ok 2”
作者: roych    时间: 2011-8-25 20:17
自定义一个过程或者函数调用即可。
Function test()
Msgbox"这是一个测试窗体"
End Function
然后在加载事件里输入:=test()即可。
如果是在Form_Onload()事件里写的话,则可以直接用Call Test。

作者: excessstone    时间: 2011-8-25 20:32
楼上的误会了我的意思。
在Form_load里调用自定义过程是没问题的。
我是说,打开窗体事件可以调用VBA或者宏,但是这个选择是在窗体设计模式下决定的。
也就是窗体打开事件里出现的是 过程 还是 宏。
我想知道用编程的方式来决定一个事件调用的是宏还是VBA。
作者: cjnt007    时间: 2011-8-27 14:32
不必须在设计模式进行,可以这样测试:
在窗体运行期间,在立即窗口分别运行如下代码:
1、设置为事件过程:
forms!窗体名.form.onload="[Event Procedure]"
2、设置为宏:
forms!窗体名.form.onload=“这里写入宏名”
3、设置为函数
forms!窗体名.form.onload="=函数名()"
当然以上动态设置是不什么保存到测试窗体中的。
作者: excessstone    时间: 2011-8-29 17:47
收到,一会儿测试一下




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3