Office中国论坛/Access中国论坛

标题: [已解决]窗体内几十个textbox的进入事件都会引发相同事件,最简单的代码怎么写? [打印本页]

作者: 软件下载    时间: 2013-8-19 21:37
标题: [已解决]窗体内几十个textbox的进入事件都会引发相同事件,最简单的代码怎么写?
本帖最后由 软件下载 于 2013-8-19 22:18 编辑

我目前用的是function et(ctl as textbox),然后在每个控件的enter事件中call et(控件名),测试通过。

但是我的控件有近100个,除在每个控件的enter事件里写上述代码外,有没有其他简化的办法?
作者: netguestcn    时间: 2013-8-19 21:50
可效仿:
Private Sub Form_Load()
    Dim ctr As Control
    For Each ctr In Me.Controls
        If ctr.Section = acDetail And ((TypeOf ctr Is TextBox) Or (TypeOf ctr Is ComboBox) Or (TypeOf ctr Is CheckBox)) Then
            ctr.OnDblClick = "=allDblClick()"
        End If
    Next
End Sub

private function allDBClick()
    docmd.openForm " frm_入库单",acnormal,,"ID= "& Me.ID & ""
End function
作者: 软件下载    时间: 2013-8-19 22:17
netguestcn 发表于 2013-8-19 21:50
可效仿:
Private Sub Form_Load()
    Dim ctr As Control

非常感谢,按照这思路写好了,另外您这代码里的函数名字不一致。

我的代码如下:
Option Compare Database



Private Sub Form_Load()
     Dim ctr As Control
     For Each ctr In Me.Controls
         If TypeOf ctr Is TextBox Then
             ctr.OnEnter = "=allDbClick(" & ctr.Name & ")"
          End If
     Next
End Sub

Private Function allDBClick(ctl As TextBox)
ctl.SelStart = Len(ctl.Text)
End Function




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