Foxtable(狐表)用户栏目专家坐堂 → 根据集合生成相应的导航


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

主题:根据集合生成相应的导航

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


加好友 发短信
等级:狐精 帖子:3215 积分:21361 威望:0 精华:0 注册:2016/3/28 16:57:00
根据集合生成相应的导航  发帖心情 Post By:2019/9/18 14:51:00 [只看该作者]

老师,请看看怎么根据可见、可用的集合加载相应的列表菜单呢?如果可见、可用就是正常的,可见不可用图标是灰色,不可见就不显示导航

以下内容是专门发给有点蓝浏览


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/18 15:38:00 [只看该作者]

比如

……
    For i As Integer = 0 To  cls.Length - 1  '增加列
        Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
        c.Name = cls(i) '指定列名
        c.Text = cls(i) '指定标题,这里标题和列名相同
        c.Width = wds(i) '指定列宽
    Next
    Dim drs As List(of DataRow )= DataTables("导航").Select ("[分类] = '我的首页' and 可见=true","序号") '增加分组
    For Each dr As DataRow In drs
        If lvw.Groups.contains(dr("分组")) =False Then
            Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
            grp.Name = dr("分组")
            grp.Text = dr("分组")
        End If
        Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
        Dim key As String= dr("图标")
        lvw.Images.AddImage(Key, Key, Key) '添加代表这个名称的一对图标
        r.ImageKey = Key '指定图标键值
        r.Group = dr("分组") '指定所属分组
        r.Tag = dr
        If dr("可用") = False Then r.ForeColor = Color.gray ‘这里设置文字颜色,如果要使用灰色图标,需要另外提供一套灰色的图标文件,然后上面添加灰色的图标后,设置对应的ImageKey 即可
……

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


加好友 发短信
等级:狐精 帖子:3215 积分:21361 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/18 15:50:00 [只看该作者]

可见,不可用状态图标不能直接灰色啊?之前都弄得系统菜单都可以灰色。
[此贴子已经被作者于2019/9/18 15:51:13编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/18 16:12:00 [只看该作者]

不能,只能换图标。

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


加好友 发短信
等级:狐精 帖子:3215 积分:21361 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/18 17:21:00 [只看该作者]

老师,麻烦看看这个内部函数,登录后执行,可见,可用没有根据集合转换到用户管理的可见、可用列里面呢。   

    User_Control.clear
    User_Control.AddRange(dr("菜单可用集合").Split(",")) '权限集合
    User_Control1.clear
    User_Control1.AddRange(dr("菜单可见集合").Split(",")) '权限集合
    Functions.Execute("Design_Add")


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/18 17:41:00 [只看该作者]

在哪里把集合的内容保存到用户管理表的?

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


加好友 发短信
等级:狐精 帖子:3215 积分:21361 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/18 17:45:00 [只看该作者]

内部函数:集合转授权表


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/19 8:21:00 [只看该作者]

问题是没看到有调用这个“集合转授权表”函数的地方

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


加好友 发短信
等级:狐精 帖子:3215 积分:21361 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2019/9/19 9:55:00 [只看该作者]

老师,图片问题这样解决字母处理,把彩色转成黑白,论坛上这样写的:

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter = "图片文件|*.jpg;*.png" '设置筛选器
If dlg.ShowDialog = DialogResult.OK Then '如果用户单击了确定按钮
    Dim omg As Image = GetImage(dlg.FileName)
    Windows.Forms.ControlPaint.DrawImageDisabled(Graphics.FromImage(omg), omg, 0, 0, Color.Transparent)
     e.Form.Controls("PictureBox1").Image = omg
End If

 

 

我现在这个把不可用字母转成黑白:

Dim pag As WinForm.TabControl = Forms("主窗口").Controls("tabControl2")
Dim dru As DataRow = DataTables("用户管理").SQLFind("账号='" & _UserName & "'")
If dru Is Nothing Then : Return 0 : End If
Dim kjjhs() As String = dru("菜单可见集合").Split(",")
Dim kyjhs() As String = dru("菜单可用集合").Split(",")
For Each fl As String In DataTables("导航").GetValues("分类","[分类]<> '"& pag.SelectedPage.Name & "'","序号") '增加分类
    If Array.IndexOf(kjjhs,fl) = -1 Then '跳过不可见的页面插入
        Continue For
    End If
    If pag.TabPages(fl) Is Nothing Then
        Dim pc As object = pag.TabPages.Add(fl,fl)  '新增加页签
        Dim dr As DataRow = DataTables("导航").Find("分类 = '" & fl & "'")
        If dr IsNot Nothing Then
            pc.Image= GetImage(dr("分类图标"))  '增加页签图标
        End If
    End If
Next
Dim lvw As WinForm.ListView = forms("主窗口").Controls("ListView1")
lvw.StopRedraw() '停止绘制
lvw.Groups.Clear() '清除原来的分组
lvw.Columns.Clear() '清除原来的列
lvw.Rows.Clear() '清除原来的行
lvw.Images.Clear() '清除原来的图片
lvw.View = ViewMode.Details '显示模式为详细信息
lvw.TitleSize = New Size(130,80) '设置平铺区域大小
lvw.GridLines  = True '显示网格线
Dim cls() As String = {"名称"} '定义列名
Dim wds() As Integer = {100} '定义列宽
For i As Integer = 0 To  cls.Length - 1  '增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) '指定列名
    c.Text = cls(i) '指定标题,这里标题和列名相同
    c.Width = wds(i) '指定列宽
Next
Dim drs As List(of DataRow )= DataTables("导航").Select ("[分类] = '"& pag.SelectedPage.Name & "'","序号") '增加分组
For Each dr As DataRow In drs
    If array.IndexOf(kjjhs,dr("名称")) = -1 Then '不可见的跳过
        Continue For
    End If
    If lvw.Groups.contains(dr("分组")) =False Then
        Dim grp As WinForm.ListViewGroup = lvw.Groups.Add()
        grp.Name = dr("分组")
        grp.Text = dr("分组")
    End If
    Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
    Dim key As String= dr("图标")
    lvw.Images.AddImage(Key, Key, Key) '添加代表这个名称的一对图标
    r.ImageKey = Key '指定图标键值
    r.Group = dr("分组") '指定所属分组
    r.Tag = dr
    For Each cl As String In cls '逐列取值
        r(cl) = dr(cl)
    Next
    If array.IndexOf(kyjhs,dr("名称")) = -1 Then '不可用的着色
        r.ForeColor= Color.Red
    End If
    lvw.ResumeRedraw() '恢复绘制
    lvw.View = ViewMode.LargeIcon '显示模式切换为大图标
Next


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110818 积分:564034 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/19 11:13:00 [只看该作者]

完全不是一回事。

ListView要使用图片,必须先加入 lvw.Images(lvw.Images.AddImage(Key, Key, Key) '添加代表这个名称的一对图标
加入只能通过这样(r.ImageKey = Key '指定图标键值)指定使用什么图标,也就是说必须先提供一套黑白图片加入lvw.Images才能使用

 回到顶部