以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]动态菜单问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114799)

--  作者:18523982317
--  发布时间: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
这样报错,我就搞不懂了该怎么添加了,帮助没得。

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





--  作者:有点甜
--  发布时间: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
--  发布时间:2018/2/23 8:51:00
--  
不是我要的
combox不是有个enter事件啊,我通常在enter事件里去写下拉列表的筛选代码,
那我在菜单里加入了个RibbonMenu.combox,原来的enter事件里筛选出下拉列表的代码,在那里去写代码?
[此贴子已经被作者于2018/2/23 8:52:05编辑过]

--  作者:有点甜
--  发布时间:2018/2/23 9:20:00
--  

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

 

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


--  作者:18523982317
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间: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
--  发布时间:2018/2/23 12:00:00
--  
1、为什么生成菜单这个例子可以返回系统菜单,我的却不行?
2、选择框那三个字是靠什么属性去掉。
3、选择框的下拉列表要在那里去设置

--  作者:18523982317
--  发布时间:2018/2/23 12:01:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生成菜单.zip

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


--  作者:有点甜
--  发布时间: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
--  发布时间:2018/2/23 12:52:00
--  
1、为什么例子里没有Syscmd.Project.OpenUserMenu()也可以返回啊?
2、选择框的下拉列表还是没有啊?