Office中国论坛/Access中国论坛

标题: 调用函数窗体名称的引用 [打印本页]

作者: liuweisunjing    时间: 2009-12-17 01:49
标题: 调用函数窗体名称的引用
做了一个录入窗体.修改按钮调用一个自定义函数.Call kebianji(me)给控件做相应标记
    Sub kebianji(frm As Form)
    Dim ctl As Control
    Dim zct As Control
    For Each ctl In frm.Controls
        If TypeOf ctl Is ComboBox Or TypeOf ctl Is TextBox Then
           Select Case ctl.Tag
            Case "Y"
               ctl.Enabled = True
               ctl.Locked = False
               ctl.BackStyle = 1
               ctl.SpecialEffect = 2
            Case "N"
              ctl.Enabled = False
              ctl.Locked = True
              ctl.BackStyle = 0
              ctl.SpecialEffect = 5
            End Select

      End If
    Next ctl
这样,窗体中的控件就变成可编辑状态.但现在领导要求不能随意改.要加上授权限制.
做了一个授权窗体.按修改后先打开授权窗体.如果密码正确,希望调用上面的函数.但在传递窗体名的问题上,怎么也解决不了.
   call kebianji(forms!窗体名),这样虽然可以,但需要每个录入窗体,都要再做一个授权窗体.应该有更好的解决办法吧??希望指教.谢谢.
作者: yanwei82123300    时间: 2009-12-17 08:16
请搜索“权限”有许多例子
作者: chenzhirong2008    时间: 2009-12-17 08:48
用 Call kebianji(me.Name)
作者: liuweisunjing    时间: 2009-12-20 23:27
看了很多权限设置的例子.但还是没有我希望的例子.可能是我讲的不太清楚,我再解释一下.
比如一张领料单.在按"修改"的时候,会弹出"授权窗体".如密码正确,希望执行Sub kebianji(frm As Form)
这是一个自定义的函数.括号里是被执行的窗体名称.现在的问题出在窗体名称的传递上.如何让括号里的"窗体名称"参数,变成领料单的窗体名称.3楼的建议传递的应该是"授权窗体的名称,而不是领料单的.望高手指点.非常感谢.
作者: topses    时间: 2009-12-20 23:57
我这里做了一个全局变量的示例程序,时间紧,做得很简单,希望能看明白。

在传递参数上方法有许多种,目前我知道至少4种以上,以下请参考
1,利用全局变量,我现用的例子,最简单,方便,最灵活
2,利用Openargs参数,任一变量均可,适用于变量较小时,
3,利用添加窗体自定义属性property,适用于通用窗体(公共窗体),比较麻烦
4,编写全局函数,再调用窗体(对话框),适用于通用窗体(公共窗体),比较麻烦,类似ACC自带显示比例窗体。
5,API方法更多了
作者: topses    时间: 2009-12-20 23:58
哦,没贴到附件
作者: liuweisunjing    时间: 2009-12-21 00:15
用方法一,解决了.真是太感谢了.这几天在这上面浪费了很多时间.
作者: 北京西洋-林志荣    时间: 2012-5-31 22:38
授权窗口有返回值,根据返回值来判断是否执行kebianji(frm As Form)

或者 授权窗口(调用窗口的窗口名),   在授权窗口中,把得到的窗口名作为变量再向kebianji函数传递。




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