Office中国论坛/Access中国论坛

标题: 窗体中各个控件的相同事件怎样简化 [打印本页]

作者: zhu320211    时间: 2012-7-14 11:26
标题: 窗体中各个控件的相同事件怎样简化
窗体中各个控件的相同事件能否简化,避免在每个控件中写相同代码,例如在窗体中的文本框控件获得焦点后都要求弹出消息显示控件名,如果在每个控件后写很麻烦,窗体中有没有事件可以简化,避免重复写代码
作者: yanghua1900363    时间: 2012-7-14 14:55
建议把该相同事件的代码作为一个独立的事件写出来,根据情况或放在模块中,或放在当前窗体中,使用时引用就可以了
作者: layaman_999    时间: 2012-7-14 16:08
1写FUNCTION模块
2.加载时循环给这些控件的事件属性赋值 “=模块名()"
作者: 咱家是猫    时间: 2012-7-14 16:28
如果动作是完全一样的,按3楼的方法就可以,如果每个控件的动作是一致的,但需要本控件的值作参数,那就需要注意:
1 把控件命令顺序化,前辍一致,后加序号
2 在Function里加序号参数
3 在Form_Load事件上循环给控件加事件属性时,也不要忘了参数值.如
For i=1 to 9
  Me.Controls("Text"& I).AftereUpdate="=FunctionName("& i &")"
Next i

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

作者: 鱼儿游游    时间: 2012-7-17 00:54
下面的代码已测试通过,供楼主参考。
  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
复制代码





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