设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1536|回复: 4
打印 上一主题 下一主题

[窗体] 窗体中各个控件的相同事件怎样简化

[复制链接]
跳转到指定楼层
1#
发表于 2012-7-14 11:26:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
窗体中各个控件的相同事件能否简化,避免在每个控件中写相同代码,例如在窗体中的文本框控件获得焦点后都要求弹出消息显示控件名,如果在每个控件后写很麻烦,窗体中有没有事件可以简化,避免重复写代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-7-14 14:55:04 | 只看该作者
建议把该相同事件的代码作为一个独立的事件写出来,根据情况或放在模块中,或放在当前窗体中,使用时引用就可以了

点评

这样还是要在每个控件后引用的  发表于 2012-7-14 15:20
3#
发表于 2012-7-14 16:08:52 | 只看该作者
1写FUNCTION模块
2.加载时循环给这些控件的事件属性赋值 “=模块名()"
4#
发表于 2012-7-14 16:28:56 | 只看该作者
如果动作是完全一样的,按3楼的方法就可以,如果每个控件的动作是一致的,但需要本控件的值作参数,那就需要注意:
1 把控件命令顺序化,前辍一致,后加序号
2 在Function里加序号参数
3 在Form_Load事件上循环给控件加事件属性时,也不要忘了参数值.如
For i=1 to 9
  Me.Controls("Text"& I).AftereUpdate="=FunctionName("& i &")"
Next i

要你的Function内,根据参数值,就能取到某个控件的值了

点击这里给我发消息

5#
发表于 2012-7-17 00:54:19 | 只看该作者
下面的代码已测试通过,供楼主参考。
  1. Private Sub Form_Load()
  2.     Dim ctl As Control
  3.     For Each ctl In Me.Controls
  4.         If ctl.Section = acDetail And ((TypeOf ctl Is TextBox)) Then
  5.             ctl.OnGotFocus = "=ShowControlName('" & ctl.Name & "')"
  6.         End If
  7.     Next
  8.     Set ctl = Nothing
  9. End Sub

  10. Private Function ShowControlName(ByVal strControlName As String)
  11.     MsgBox "获得焦点的文本控件名为:" & strControlName, vbInformation, "文本控件名"
  12. End Function
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-28 23:58 , Processed in 0.107403 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表