以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求教:关于菜单的打开权限问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=15258)

--  作者:yangming
--  发布时间:2011/12/18 21:28:00
--  求教:关于菜单的打开权限问题

在用户登录窗口的登录按钮中,我做了一个权限的代码,意思就是按用户的分组进行权限来加载窗口,首先是一个显示菜单的遍历,然后是根据分组来决定关闭哪些功能区及某个功能区的相关的功能组,按下面的代码做了之后,我发现一个问题,当一个用户直接登录时,代码没问题,如果说在菜单中选择了切换客户后,问题就出来了,原来有功能组给关闭的报表功能区及系统功能区中的相关的功能组就仍然是关闭的了

 

看来,我原来认为 rb,就是一个菜单的所有功能区及功能组的集合,现在看来只是功能区,并不代表功能组,那么,应该如何来做呢?

 

For Each rb As RibbonMenu.Tab In RibbonTabs \'RibbonTabs是一个菜单集合,可以用for each遍历的
        rb.Visible = True  \'显示菜单
    Next


Select Case dr("Group")
        Case "采购"
            RibbonTabs("销售管理").Visible = False
            RibbonTabs("财务管理").Visible = False
            RibbonTabs("系统管理").Groups("销售信息").Visible = False
            RibbonTabs("系统管理").Groups("财务信息").Visible = False
            RibbonTabs("报表管理").Groups("销售出库").Visible = False
            RibbonTabs("报表管理").Groups("财务报表").Visible = False
           
        Case "销售"
            RibbonTabs("财务管理").Visible = False
            RibbonTabs("采购管理").Visible = False
            RibbonTabs("系统管理").Groups("采购信息").Visible = False
            RibbonTabs("系统管理").Groups("财务信息").Visible = False
            RibbonTabs("报表管理").Groups("采购入库").Visible = False
            RibbonTabs("报表管理").Groups("财务报表").Visible = False
           
        Case "财务"
            RibbonTabs("销售管理").Visible = False
            RibbonTabs("采购管理").Visible = False
            RibbonTabs("系统管理").Groups("销售信息").Visible = False
            RibbonTabs("系统管理").Groups("采购信息").Visible = False
            RibbonTabs("报表管理").Groups("销售出库").Visible = False
            RibbonTabs("报表管理").Groups("采购入库").Visible = False
    End Select

[此贴子已经被作者于2011-12-18 21:30:20编辑过]

--  作者:gaoyong30000
--  发布时间:2011/12/18 22:00:00
--  

我以前也遇到过这个问题 我给你段老大给我的代码 你参考下!

 

 

RibbonTabs("功能区1").Visible = False
RibbonTabs("功能区2")("功能组2")("标准按钮9").Enabled = (_usergroup <> "东区销售经理")
RibbonTabs("功能区2")("功能组2")("组合按钮2").Enabled = (_usergroup <> "东区销售经理")
RibbonTabs("功能区2")("功能组3")("标准按钮7").Enabled = Not (_usergroup Like "*销售部")
RibbonTabs("功能区2")("功能组3")("标准按钮8").Enabled = Not (_usergroup Like "*销售部")
RibbonTabs("功能区2")("功能组2").Enabled = _usergroup <> "东区市场部"
RibbonTabs("功能区2")("功能组3").Enabled = _usergroup <> "东区市场部"
Qat().Enabled = _usergroup <> "东区市场部"

 

 

[此贴子已经被作者于2011-12-18 22:00:07编辑过]

--  作者:yangming
--  发布时间:2011/12/18 22:38:00
--  
以下是引用gaoyong30000在2011-12-18 22:00:00的发言:

我以前也遇到过这个问题 我给你段老大给我的代码 你参考下!

 

 

RibbonTabs("功能区1").Visible = False
RibbonTabs("功能区2")("功能组2")("标准按钮9").Enabled = (_usergroup <> "东区销售经理")
RibbonTabs("功能区2")("功能组2")("组合按钮2").Enabled = (_usergroup <> "东区销售经理")
RibbonTabs("功能区2")("功能组3")("标准按钮7").Enabled = Not (_usergroup Like "*销售部")
RibbonTabs("功能区2")("功能组3")("标准按钮8").Enabled = Not (_usergroup Like "*销售部")
RibbonTabs("功能区2")("功能组2").Enabled = _usergroup <> "东区市场部"
RibbonTabs("功能区2")("功能组3").Enabled = _usergroup <> "东区市场部"
Qat().Enabled = _usergroup <> "东区市场部"

 

 

[此贴子已经被作者于2011-12-18 22:00:07编辑过]

谢谢,我用死办法做了一下,也可以用,我发贴的目的是为了搞清楚这个问题,呵呵


--  作者:gaoyong30000
--  发布时间:2011/12/18 22:41:00
--  

死办法可以用?  什么办法?


--  作者:yangming
--  发布时间:2011/12/18 23:24:00
--  
以下是引用gaoyong30000在2011-12-18 22:41:00的发言:

死办法可以用?  什么办法?

和你的差不多,我就是在一楼的两段代码中间加了这几行代码,就可以了

RibbonTabs("系统管理").Groups("销售信息").Visible = True
RibbonTabs("系统管理").Groups("财务信息").Visible = True
RibbonTabs("系统管理").Groups("采购信息").Visible = True
RibbonTabs("报表管理").Groups("销售出库").Visible = True
RibbonTabs("报表管理").Groups("采购入库").Visible = True
RibbonTabs("报表管理").Groups("财务报表").Visible = True

我的想法是,这几个功能组,常常会关闭,那我每次在打开功能区的情况下,再打开这几个功能区,然后再根据权限来关闭某些功能组吧,呵呵

[此贴子已经被作者于2011-12-18 23:25:59编辑过]

--  作者:blackzhu
--  发布时间:2011/12/19 7:51:00
--  
看看是放在什么事件里的?如果是自定义登录,应该放在登录按钮里的吧
--  作者:jspta
--  发布时间:2011/12/19 15:42:00
--  

是不是这样的,启动的时候是默认全部可见的,但是切换用户的时候,没有初始化的命令的动作,表就保持这个状态了。因为恢复visible这个状态,你没有加入到切换用户这个事件中。个人感觉foxtable关于用户的权限是通过修改datatable属性完成的,你修改后,需要重新初始化。


--  作者:yangming
--  发布时间:2011/12/19 16:18:00
--  
以下是引用jspta在2011-12-19 15:42:00的发言:

是不是这样的,启动的时候是默认全部可见的,但是切换用户的时候,没有初始化的命令的动作,表就保持这个状态了。因为恢复visible这个状态,你没有加入到切换用户这个事件中。个人感觉foxtable关于用户的权限是通过修改datatable属性完成的,你修改后,需要重新初始化。

我说的是菜单的权限,呵呵