Foxtable(狐表)用户栏目专家坐堂 → [请教] 关关于菜单的设计问题


  共有2959人关注过本帖平板打印复制链接

主题:[请教] 关关于菜单的设计问题

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


加好友 发短信
等级:幼狐 帖子:161 积分:1459 威望:0 精华:0 注册:2017/9/22 10:58:00
[请教] 关关于菜单的设计问题  发帖心情 Post By:2018/3/28 10:07:00 [只看该作者]

 需要在程序中根据用户权限,确定菜单的内容。所以,需要动态生成菜单。

  网友
lin_hailun图片点击可在新窗口打开查看  在帖子<[分享]从数据表生成动态菜单,让多个项目共用一个菜单。>中给出了一个办法, 我也试了,在试用版中正常,可在我的开发版中只能生成菜单项,却无法触发任何事件。请教,我该怎么做?

这是添加的主菜单的click事件:(照抄过来的)
messagebox.show("菜单项: " & e.Sender.Name)

try
  
    Functions.Remove("ExecuteMenu")
    Dim dr As DataRow = DataTables("菜单表").Find("_Identify = " & e.Sender.Name)
    Dim Code As String = dr("菜单代码")
    Functions.Add("ExecuteMenu", Code)
    Functions.Complie()
    Functions.Execute("ExecuteMenu")

catch ex As exception
   
End try

项目的AfterOpenProject 中处理菜单内容的代码如下: (照抄来的)

LockBaseMainForm() '锁定主窗口
'
'RibbonTabs.Clear
'QAT.Items.Clear
'ConfigBar.Items.Clear

'
Dim dt As DataTable = DataTables("菜单表")
For Each dr As DataRow In dt.DataRows
    messagebox.show(dr("菜单标题"))
    Select Case dr("类型")
        Case "功能区"
           
            Dim ntab As RibbonMenu.Tab
            Dim ngrp As RibbonMenu.Group
            Dim nmenu As Object
           
            If RibbonTabs.Contains(dr("功能区")) Then
                ntab = RibbonTabs(dr("功能区"))
            Else
                ntab = New RibbonMenu.Tab(dr("功能区"))
                RibbonTabs.Add(ntab)
            End If
           
            If ntab.Groups.Contains(dr("功能组")) Then
                ngrp = ntab.Groups(dr("功能组"))
            Else
                ngrp = New RibbonMenu.Group(dr("功能组"))
                ntab.Groups.Add(ngrp)
            End If
            '编译一个生成不同菜单的函数
            Functions.Remove("CreateMenu")
            Dim Code As String = ""
            Code = "Dim menu As New " & dr("菜单类型") & "(""" & dr("_Identify") & """)" & vbcrlf
            Code = Code & "Return menu"
           
            Functions.Add("CreateMenu", Code)
            Functions.Complie()
           
            nmenu = Functions.Execute("CreateMenu")
           
            ntab.Text = dr("功能区")
            ngrp.Text = dr("功能组")
            nmenu.Text = dr("菜单标题")
            nmenu.smallImage = getimage(dr("图标"))
           
            ngrp.Items.Add(nmenu)   '加入菜单
           
        Case "快速访问栏"
            '编译一个生成不同菜单的函数
            If dr.Isnull("功能区") Then
                '编译一个生成不同菜单的函数
                Functions.Remove("CreateMenu")
                Dim Code As String = ""
                Code = "Dim menu As New " & dr("菜单类型") & "(""" & dr("菜单标题") & """)" & vbcrlf
                Code = Code & "Return menu"
               
                Functions.Add("CreateMenu", Code)
                Functions.Complie()
               
                Dim nmenu As Object = Functions.Execute("CreateMenu")
                nmenu.Text = dr("菜单标题")
               
                QAT.Items.Add(nmenu)
            Else
                '编译一个生成不同菜单的函数
                Functions.Remove("CreateMenu")
                Dim Code As String = ""
                Code = "Dim menu As New " & dr("菜单类型") & "(""" & dr("_Identify") & """)" & vbcrlf
                Code = Code & "Return menu"
               
                Functions.Add("CreateMenu", Code)
                Functions.Complie()
               
                Dim nmenu As Object = Functions.Execute("CreateMenu")
                nmenu.Text = dr("菜单标题")
               
                QAT.Items(dr("功能区")).Items.Add(nmenu)
            End If
        Case "配置栏"
            '编译一个生成不同菜单的函数
            Functions.Remove("CreateMenu")
            Dim Code As String = ""
            Code = "Dim menu As New " & dr("菜单类型") & "(""" & dr("_Identify") & """)" & vbcrlf
            Code = Code & "Return menu"
           
            Functions.Add("CreateMenu", Code)
            Functions.Complie()
           
            Dim nmenu As Object = Functions.Execute("CreateMenu")
            nmenu.Text = dr("菜单标题")
            nmenu.smallImage = getimage(dr("图标"))
            ConfigBar.Items.Add(nmenu)
           
    End Select
Next

UnLockBaseMainForm() '解锁主窗口

菜单表的格式如下:

图片点击可在新窗口打开查看此主题相关图片如下:菜单设计.png
图片点击可在新窗口打开查看



[此贴子已经被作者于2018/3/28 10:11:59编辑过]

 回到顶部