Foxtable(狐表)用户栏目专家坐堂 → [求助]动态菜单问题


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

主题:[求助]动态菜单问题

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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
[求助]动态菜单问题  发帖心情 Post By:2018/2/22 19:01:00 [只看该作者]

 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")
通过上面的代码生成了各种菜单控件,在我的理解中nmenu现在就是个控件了,如果作为RibbonMenu.ComboBox,如何添加下拉菜单?
For Each cl As String In DataTables("A0_菜单表").GetComboListString("功能区").Split("|")
                        nmenu.Items.add(cl)
                    Next
这样报错,我就搞不懂了该怎么添加了,帮助没得。

还有添加事件,菜单全局代码里有单击事件还有其他的一些事件,如果不够用,咋整?





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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/22 20:37:00 [只看该作者]

参考代码

 

Dim Code As String = ""
Code = "Dim menu As New RibbonMenu.ComboBox(""test"")" & vbcrlf
Code = Code & "Return menu"

Functions.Add("CreateMenu", Code)
Functions.Complie()

Dim nmenu = Functions.Execute("CreateMenu")
Dim b As New RibbonMenu.Button("abc")
b.Text = "abc"
nmenu.items.add(b)


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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2018/2/23 8:51:00 [只看该作者]

不是我要的
combox不是有个enter事件啊,我通常在enter事件里去写下拉列表的筛选代码,
那我在菜单里加入了个RibbonMenu.combox,原来的enter事件里筛选出下拉列表的代码,在那里去写代码?
[此贴子已经被作者于2018/2/23 8:52:05编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/23 9:20:00 [只看该作者]

你根本就没有看懂代码。要new一个对象,才能add进去啊

 

Dim b As New RibbonMenu.Button("abc")
b.Text = "abc"
nmenu.items.add(b)


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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2018/2/23 11:31:00 [只看该作者]

LockBaseMainForm() '锁定主窗口
RibbonTabs.Clear
Dim dt As DataTable = DataTables("A0_菜单表")
For Each dr As DataRow In dt.DataRows
    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("菜单标题")
            Select Case dr("菜单类型")
                Case "RibbonMenu.Button"
                    If dr.IsNull("图片排列") = False Then
                        nmenu.LargeImage =GetImage(dr("图片名称") & ".png")
                        nmenu.TextImageRelation = 1
                    End If
                Case "RibbonMenu.ComboBox"
                    For Each cl As String In DataTables("A0_菜单表").GetComboListString("功能区").Split("|")
                        Dim b As New RibbonMenu.Button(cl)
                        nmenu.Items.add(b)
                    Next
            End Select
            ngrp.Items.Add(nmenu)   '加入菜单
    End Select
Next
UnLockBaseMainForm() '解锁主窗口


1、选择框里没有任何下拉列表,我弹窗看了 cl有值
2、我切换会系统菜单  切换不回去,无论通过代码,还是F12,请问是不是把系统菜单都给clear了?
3、combox里面的默认字怎么清除?
[此贴子已经被作者于2018/2/23 11:33:26编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/23 11:42:00 [只看该作者]

1、请上传具体事例测试。

 

2、不能写 RibbonTabs.Clear。

 

3、默认字指什么?

 

看懂下面的代码啊

 

Dim Code As String = ""
Code = "Dim menu As New RibbonMenu.ComboBox(""test"")" & vbcrlf
Code = Code & "Return menu"

Functions.Add("CreateMenu", Code)
Functions.Complie()

Dim nmenu = Functions.Execute("CreateMenu")
Dim b As New RibbonMenu.Button("abc")
b.Text = "abc"
nmenu.items.add(b)
RibbonTabs("功能区1").Groups("功能组1").items.add(nmenu)


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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2018/2/23 12:00:00 [只看该作者]

1、为什么生成菜单这个例子可以返回系统菜单,我的却不行?
2、选择框那三个字是靠什么属性去掉。
3、选择框的下拉列表要在那里去设置

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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2018/2/23 12:01:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生成菜单.zip

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:oa.rar


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/23 12:22:00 [只看该作者]

LockBaseMainForm() '锁定主窗口
Syscmd.Project.OpenUserMenu()
RibbonTabs.Clear
Dim dt As DataTable = DataTables("A0_菜单表")
For Each dr As DataRow In dt.DataRows
    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("菜单标题")
            Select Case dr("菜单类型")
                Case "RibbonMenu.Button"
                    If dr.IsNull("图片排列") = False Then
                        nmenu.LargeImage =GetImage(dr("图片名称") & ".png")
                        nmenu.TextImageRelation = 1
                    End If
                Case "RibbonMenu.ComboBox"
                    For Each cl As String In DataTables("A0_菜单表").GetComboListString("功能区").Split("|")
                        Dim b As New RibbonMenu.Button(cl)
                        b.text = cl
                        nmenu.Items.add(b)
                    Next
                    nmenu.Text = ""
            End Select
            ngrp.Items.Add(nmenu)   '加入菜单
    End Select
Next
UnLockBaseMainForm() '解锁主窗口

 


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


加好友 发短信
等级:四尾狐 帖子:857 积分:6156 威望:0 精华:0 注册:2015/12/24 13:02:00
  发帖心情 Post By:2018/2/23 12:52:00 [只看该作者]

1、为什么例子里没有Syscmd.Project.OpenUserMenu()也可以返回啊?
2、选择框的下拉列表还是没有啊?

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