Office中国论坛/Access中国论坛

标题: 求助:怎样判断某个窗体的一个文本框是否存在 [打印本页]

作者: zyp    时间: 2015-4-29 17:20
标题: 求助:怎样判断某个窗体的一个文本框是否存在
本帖最后由 zyp 于 2015-4-29 17:24 编辑

想要从某个窗体检测另外的窗体是否有指定名称的文本框存在

目前是用for each ...next 来遍历控件对像,直到找到控件的名称与想要找的名称一致,找到就退出,没有找到就提示没有;代码如下:

dim fm as object, A as control, CpID as long
set fm=Screen.Activeform
for each A in fm.Controls
       if A.name="产品ID" then
                CPid=nz(A.value,0)
                exit for
       end if
next
set fm=nothing

其实就是想找到当前的窗体中是否有名为“产品ID”的文本框,有的话请取其值

上面的方法虽然能够达到结果,但代码相对来讲多了些,请问有没有更为简单些的方法?就是用最少的代码检测窗体有没有这个文件框

请高手们不吝指教!





作者: 盗梦    时间: 2015-4-29 17:22
这样太麻烦了。你可以弄个错误处理,直接去这个文本框的Name属性的值。如果取得到就说明存在。取不到,就会出错,就说明文本框不存在
作者: 盗梦    时间: 2015-4-29 17:25
private function checkControl(strName  as  string) as boolean
On  Error  goto  Err_Handler
         dim  str  as string
         str=Me.Controls(strName).Name  '取窗体对应控件的名称,如果没有该控件就会报错,就相当于返回False
         checkTextbox=true
Err_Handler:
end function
作者: todaynew    时间: 2015-4-29 17:38
写成自定义函数,随时调用不就可以了吗?
Public Function ExistCtrl(ByVal frm As Form, ByVal ctrlname As String) As Boolean
    Dim ctrl As Control
    Dim B As Boolean
    B = False
    For Each ctrl In frm.Controls
        If ctrl.Name = ctrlname Then
            B = True
            Exit For
        End If
    Next
    Set ctrl = Nothing
    ExistCtrl = B
End Function
作者: zyp    时间: 2015-5-6 09:50
盗梦 发表于 2015-4-29 17:25
private function checkControl(strName  as  string) as boolean
On  Error  goto  Err_Handler
        ...

谢谢  盗梦
你的方法完全可行,而且比较省事。谢谢!
作者: zyp    时间: 2015-5-6 10:00
todaynew 发表于 2015-4-29 17:38
写成自定义函数,随时调用不就可以了吗?
Public Function ExistCtrl(ByVal frm As Form, ByVal ctrlname  ...

谢谢 todaynew 版主

你的方法真管用,谢谢!

真的佩服你代码的专业和标准




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