Foxtable(狐表)用户栏目专家坐堂 → [讨论]从导航栏开始学习权限管理


  共有8412人关注过本帖树形打印复制链接

主题:[讨论]从导航栏开始学习权限管理

帅哥哟,离线,有人找我吗?
石四
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
[讨论]从导航栏开始学习权限管理  发帖心情 Post By:2014/3/18 14:23:00 [显示全部帖子]

帮助文件

关于NavBar

属性: 

Dim Bar As WinForm.NavBar
Dim
Page1 As WinForm.NavPage
Dim
Page2 As WinForm.NavPage
Bar = Forms(
"窗口1").Controls("NavBar1")
Page1 = Bar.NavPages(
"Task")
Page2 = Bar.NavPages(
0)

 

如果在窗口中添加一个导航栏NavBar1,就有现成的三个页面:任务,联系人,日历.

 

Dim Bar As WinForm.NavBar
Dim Page1 As WinForm.NavPage
Dim Page2 As WinForm.NavPage
Bar = Forms("导航").Controls("NavBar1")
Page1 = Bar.NavPages("Task")
Page2 = Bar.NavPages(0)
Bar.NavPages(2).Visible = False

 

以上代码可以隐藏页面"任务"

 

如果想增加页面"计划管理",怎么做?我在上面的代码增加

Add(计划管理, 计划管理, ButtonImageFile)

不行呢!

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:权限管理 (1).table


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/18 14:33:00 [显示全部帖子]

以下是引用Bin在2014-3-18 14:26:00的发言:
Bar.NavPages.Add("计划管理", "计划管理", "")

如果想有图标
Bar.NavPages.Add("计划管理", "计划管理", "图标文件路径")

哦,那么插入应该是:

Bar.NavPages.Insert("计划管理", "计划管理", "",1)

[此贴子已经被作者于2014-3-18 14:33:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/18 14:38:00 [显示全部帖子]

隐藏页面还是会有空页面,占位置,最好能动态插入或删除页面.

----------------------------

看错了,隐藏不会出现空页面.

[此贴子已经被作者于2014-3-18 14:51:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/19 13:58:00 [显示全部帖子]

模仿别人的权限管理,这里控制的是NavPages和TopicPage,

 

For Each t As Table In Tables

    t.Visible = False

    For Each c As Col In t.Cols

        c.Visible = False

           Next

Next

 

 

Dim roles() As String = _userGroup.Split(",")

 

For Each role As String In roles

    Dim drs As List(Of DataRow) = DataTables("权限2").Select("可见 = '" & role & "' or 可见 like '" & role & ",*' or 可见 like '*," & role & ",*' Or 可见 like '*," & role & "'")

    For Each dr As DataRow In drs

        If dr.Isnull("NavPages") AndAlso dr.Isnull("TopicPage") Then

            For Each t As Table In Tables

                t.Visible = True

            Next

        Else If dr.isnull("TopicPage") Then

            Tables(dr("NavPages")).Visible = True

            For Each c As col In Tables(dr("NavPages")).Cols

                c.Visible = True

            Next

        Else

            Tables(dr("NavPages")).Visible = True

            For Each c As col In Tables(dr("NavPages")).Cols

                If dr("TopicPage") = c.name OrElse dr("TopicPage") Like c.name & ",*" OrElse dr("TopicPage") Like "*," & c.name & ",*" OrElse dr("TopicPage") Like "*," & c.name Then

                    c.Visible = True

                End If

            Next

        End If

Next

Next

 

但是红色字体部分不知怎么篡改,求助.

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:权限管理_小例.table

[此贴子已经被作者于2014-3-19 13:59:11编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/19 16:44:00 [显示全部帖子]

可以哦,不过有小小遗憾,设置导航权限后,导航栏未正常显示当前页面标题,显示NavBar1,占击一个页面后才正常.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:权限管理 (1).table

[此贴子已经被作者于2014-3-19 16:44:47编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/20 9:59:00 [显示全部帖子]

增加了一段代码:

e.Form.Controls("NavBar1").SelectedIndex=0

选定第一个页面.

 


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/20 10:06:00 [显示全部帖子]

任务栏权限应该类似吧?试试,先帖导航栏的代码留作笔记:

For Each np As WinForm.NavPage In e.Form.Controls("NavBar1").NavPages
    For Each wc As WinForm.Control In np.Children
        If Typeof wc Is WinForm.TopicBar Then
            Dim tb As WinForm.TopicBar = wc
            For Each tp As WinForm.TopicPage In tb.Pages
                tp.Visible=False
            Next
        End If
    Next
    np.Visible=False
Next

For Each dr As DataRow In DataTables("导航权限").Select("可见 = '" & User.name & "' or 可见 like '" & User.name & ",*' or 可见 like '*," & User.name & ",*' Or 可见 like '*," & User.name & "'")
    For Each np As WinForm.NavPage In e.Form.Controls("NavBar1").NavPages
        If np.ButtonText=dr("NavPages") Then
            np.Visible=True
            For Each s As String In dr("TopicPage").split(",")
                For Each wc As WinForm.Control In np.Children
                    If Typeof wc Is WinForm.TopicBar Then
                        Dim tb As WinForm.TopicBar = wc
                        For Each tp As WinForm.TopicPage In tb.Pages
                            If tp.Text=s Then
                                tp.Visible=True
                            End If
                        Next
                    End If
                Next
               
            Next
        End If
    Next
Next
e.Form.Controls("NavBar1").SelectedIndex=0


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/20 13:51:00 [显示全部帖子]

任务栏和导航栏不一样呢,没有Children属性,不能照搬上面的代码.

小白请问第一段代码改成这样行不行:

 

For Each t As TopicPage In TopicBar1

    t.Visible = False

    For Each c As TopicLinks In t

        c.Visible = False

           Next

Next


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/20 14:16:00 [显示全部帖子]

任务name表达?

用以下代码出现错误提示:

 

For Each tp As WinForm.TopicPage In e.Form.Controls("TopicBar1").TopicPage

tp.Visible=False
For Each lk As Topiclink In tb
                lk.Visible=False
            Next
       
   
Next

For Each dr As DataRow In DataTables("任务权限").Select("可见 = '" & User.name & "' or 可见 like '" & User.name & ",*' or 可见 like '*," & User.name & ",*' Or 可见 like '*," & User.name & "'")
   For Each tp As WinForm.TopicPage In e.Form.Controls("TopicBar1").TopicPage

        If tp.Text=dr("TopicPage") Then
            tp.Visible=True
                                  For Each lk As Topiclink In tb

                            If lk.Text= dr("Links") Then
                                lk.Visible=True
                            End If
                        Next
                    End If
                Next

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:权限管理 (1).table


图片点击可在新窗口打开查看此主题相关图片如下:11.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-3-20 14:17:22编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/3/20 15:04:00 [显示全部帖子]

改了还是不行.

For Each tp As WinForm.TopicPage In e.Form.Controls("TopicBar1").TopicPage
    tp.Visible=False
    For Each lk As WinForm.TopicLink In tp
        lk.Visible=False
    Next
   
Next
For Each dr As DataRow In DataTables("任务权限").Select("可见 = '" & User.name & "' or 可见 like '" & User.name & ",*' or 可见 like '*," & User.name & ",*' Or 可见 like '*," & User.name & "'")
    For Each tp As WinForm.TopicPage In e.Form.Controls("TopicBar1").TopicPage
        If tp.Text=dr("TopicPage") Then
            tp.Visible=True
            For Each lk As WinForm.TopicLink In tp
                If lk.Text= dr("Links") Then
                    lk.Visible=True
                End If
            Next
        End If
    Next


图片点击可在新窗口打开查看此主题相关图片如下:11.jpg
图片点击可在新窗口打开查看

 回到顶部
总数 16 1 2 下一页