以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗口中按钮权限设置  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=71241)

--  作者:xiaohuli
--  发布时间:2015/7/7 22:19:00
--  窗口中按钮权限设置

有一张权限表,里面有用户名,岗位名称,角色,按钮名,按钮不可用(逻辑列)等字段,然后做了一个窗口,想对窗口中的按钮进行设置权限,不同的用户登录进去打开这个窗口后,有些按钮是不可用的,有些按钮是可用的。这个该如何用代码控制权限。

eg:

权限表:

用户名  岗位名称, 按钮名称,                      按钮不可用

张三      会计专员   人事档案   考勤   生日提醒        是

像这张表所示,当张三用户登录后,打开一个窗口,该窗口上的人事档案,考勤,生日提醒等按钮都变为不可用的。


--  作者:大红袍
--  发布时间:2015/7/7 22:23:00
--  

 去编写afterLoad事件,查找用户名是张三、按钮不可用的行,然后取出按钮名称,然后设置

 

e.Form.Controls(名称).Enabled = False


--  作者:xiaohuli
--  发布时间:2015/7/7 22:27:00
--  

 

[此贴子已经被作者于2015/7/7 22:41:28编辑过]

--  作者:大红袍
--  发布时间:2015/7/7 22:27:00
--  
For Each dr As DataRow In DataTables("权限表").Select("用户名 = \'" & user.Name & "\' and 按钮不可用 = true")
    For Each bn As String In dr("按钮名称").split(",")
        If e.Form.Controls.Contains(bn) Then
            e.Form.Controls(bn).Enabled = False
        End If
    Next
Next

--  作者:xiaohuli
--  发布时间:2015/7/8 20:21:00
--  

老师,窗口中按钮的权限已经能控制了,那窗口中还有个任务栏,任务栏中的任务怎么控制权限呀,也能通过权限表来控制吗?求老师帮忙。


--  作者:大红袍
--  发布时间:2015/7/8 20:28:00
--  

 参考代码

 

For Each p As WinForm.TopicPage In Forms("窗口1").Controls("TopicBar1").Pages
    For Each l As WinForm.TopicLink In p.Links
        If l.Text = "任务1" Then
            p.Links("任务1").Visible = False
        End If
    Next
Next


--  作者:xiaohuli
--  发布时间:2015/7/8 21:09:00
--  

老师,能不能通过权限表来对任务栏的任务进行控制,就想控制按钮一样。

For Each dr As DataRow In DataTables("权限表").Select("用户名 = \'" & user.Name & "\' and 按钮不可用 = true")
    For Each bn As String In dr("按钮名称").split(",")
        If e.Form.Controls.Contains(bn) Then
            e.Form.Controls(bn).Enabled = False
        End If
    Next
Next


--  作者:大红袍
--  发布时间:2015/7/8 21:13:00
--  

 参考6楼的代码,任务1换成你表里面的名字。


--  作者:xiaohuli
--  发布时间:2015/8/24 14:46:00
--  

老师,我现在想实现当权限表中有按钮名称,并且按钮不可用打钩后,然后点击按钮的时候,按钮就不能打开,并且提示你无权操作。能不能将下面这段代码帮我改一下,也就是说当权限表中对这些按钮分配了权限,然后点击按钮的时候就判断,当前用户对当前按钮是否有操作权限。

For Each dr As DataRow In DataTables("权限表").Select("用户名 = \'" & user.Name & "\' and 按钮不可用 = true")
    For Each bn As String In dr("按钮名称").split(",")
        If e.Form.Controls.Contains(bn) Then
          MessageBox.show("你无权操作!")
        End If
    Next
Next


--  作者:大红袍
--  发布时间:2015/8/24 14:55:00
--  

窗口Click事件

 

For Each dr As DataRow In DataTables("权限表").Select("用户名 = \'" & user.Name & "\' and 按钮不可用 = true")
    For Each bn As String In dr("按钮名称").split(",")
        If bn = e.sender.Name Then
          MessageBox.show("你无权操作!")

          return
        End If
    Next
Next

 

\'其余代码