以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 读取菜单结构的错误提示 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175060) |
-- 作者:hfapplehao -- 发布时间:2022/2/18 9:12:00 -- 读取菜单结构的错误提示 想写一段代码,用来提取菜单的结构, 比如功能区,功能组,菜单按钮,还有按钮的标题,结果系统提示错误,改了几次仍然存在,不知道问题出在哪儿了,求老师指点迷津 Dim dt As DataTable = DataTables("菜单结构表") 原贴代码如下 \'把功能区的名称分别列入菜单表 For Each rtb As RibbonMenu.Tab In RibbonTabs \'遍历功能区,把功能区的名字加入到节点集合中 For Each grp As RibbonMenu.Group In rtb.Groups \'遍历功能区功能组集合 For Each itm As RibbonMenu.RibbonItem In grp.Items \'遍历功能组里面的所有控件 Dim dr As DataRow = dt.addnew() \'定义新加行 dr("类型") = "功能区" dr("功能区") = rtb.name dr("功能组") = grp.name dr("菜单按钮") = itm.name \'dr("菜单标题") = itm.Text \'出问题的就是这个地方,想获取菜单的标题来着 dr("菜单类型") = itm.Gettype.name dr.save() Next Next Next |
-- 作者:有点蓝 -- 发布时间:2022/2/18 9:25:00 -- 不是所有的菜单项都有text属性,这个到帮助看看每个菜单的属性,然后区分一下:http://www.foxtable.com/webhelp/topics/2034.htm 比如: For Each itm As RibbonMenu.RibbonItem In grp.Items \'遍历功能组里面的所有控件 Dim dr As DataRow = dt.addnew() \'定义新加行 dr("类型") = "功能区" dr("功能区") = rtb.name dr("功能组") = grp.name dr("菜单按钮") = itm.name If Typeof itm Is RibbonMenu.DatePicker orelse Typeof itm Is RibbonMenu.NumericBox orelse ...... Then dr("菜单标题") = itm.Label elseIf Typeof itm Is RibbonMenu.xxx .... else dr("菜单标题") = itm.Text \'出问题的就是这个地方,想获取菜单的标题来着 endif dr("菜单类型") = itm.Gettype.name dr.save() Next |
-- 作者:hfapplehao -- 发布时间:2022/2/18 9:54:00 -- 老师,按照您说的思路改了下代码,可是还是提示同样的错误 For Each rtb As RibbonMenu.Tab In RibbonTabs \'遍历功能区,把功能区的名字加入到节点集合中 For Each grp As RibbonMenu.Group In rtb.Groups \'遍历功能区功能组集合 For Each itm As RibbonMenu.RibbonItem In grp.Items \'遍历功能组里面的所有控件 Dim dr As DataRow = dt.addnew() \'定义新加行 dr("类型") = "功能区" dr("功能区") = rtb.name dr("功能组") = grp.name dr("菜单按钮") = itm.name dr("菜单类型") = itm.Gettype.name If Typeof itm Is RibbonMenu.DatePicker OrElse Typeof itm Is RibbonMenu.NumericBox OrElse Typeof itm Is RibbonMenu.TextBox OrElse Typeof itm Is RibbonMenu.TimePicker OrElse Typeof itm Is RibbonMenu.ComboBox OrElse Typeof itm Is RibbonMenu.FontComboBox OrElse Typeof itm Is RibbonMenu.ProgressBar OrElse Typeof itm Is RibbonMenu.TrackBar Then dr("菜单标题") = itm.Label ElseIf Typeof itm Is RibbonMenu.Separator dr("菜单标题") = itm.name Else dr("菜单标题") = itm.text End If dr.save() Next Next Next |
-- 作者:有点蓝 -- 发布时间:2022/2/18 10:08:00 -- 提示某些类型菜单没有Label属性 |
-- 作者:hfapplehao -- 发布时间:2022/2/18 10:24:00 -- 我挨个都查看了呀,确认label属性 和text属性都分清楚了 一共16个组件,其中有8个是label 属性,7个是text属性,还有个separator label 和text属性都没有 代码也是根据查的内容写的 可是还是提示那个错误 |
-- 作者:有点蓝 -- 发布时间:2022/2/18 10:39:00 -- 要使用变量过渡一下,RibbonMenu.RibbonItem类型是父类本身是没有这个属性的 If Typeof itm Is RibbonMenu.DatePicker Then dim it2 as RibbonMenu.DatePicker = itm dr("菜单标题") = it2.Label elseIf Typeof itm Is RibbonMenu.NumericBox dim it2 as RibbonMenu.NumericBox= itm dr("菜单标题") = it2.Label elseif ............ .... else dr("菜单标题") = itm.Text \'出问题的就是这个地方,想获取菜单的标题来着 endif |
-- 作者:hfapplehao -- 发布时间:2022/2/18 11:50:00 -- 问题解决了,只能挨个设置了 测试过程中又发现几个新问题 1. FontComboBox 这个会跳出两个text属性,见附件 If Typeof itm Is RibbonMenu.FontComboBox Then Dim it2 As RibbonMenu.FontComboBox = itm dr("菜单标题") = it2.Text \'这个地方按住精灵会出现两个text属性 end if 2.progressbar 和 trackbar 没有label 属性。但是帮助文档里提到有label 属性,是不是忘了更新了 测试截图如下 Else If Typeof itm Is RibbonMenu.ProgressBar Then Dim it2 As RibbonMenu.ProgressBar = itm dr("菜单标题") = it2.Text Else If Typeof itm Is RibbonMenu.TrackBar Then Dim it2 As RibbonMenu.TrackBar = itm dr("菜单标题") = it2.Text end if 另外 progressbar 和 trackbar 的Text 为啥会出错呀? 看错误提示 在老师的帮助下,终于完成了这个代码 大家可以参考下 Dim dt As DataTable = DataTables("菜单结构表") \'把功能区的名称分别列入菜单表 For Each rtb As RibbonMenu.Tab In RibbonTabs \'遍历功能区,把功能区的名字加入到节点集合中 For Each grp As RibbonMenu.Group In rtb.Groups \'遍历功能区功能组集合 For Each itm As RibbonMenu.RibbonItem In grp.Items \'遍历功能组里面的所有控件 Dim dr As DataRow = dt.addnew() \'定义新加行 dr("类型") = "功能区" dr("功能区") = rtb.name dr("功能组") = grp.name dr("菜单按钮") = itm.name dr("菜单类型") = itm.Gettype.name If Typeof itm Is RibbonMenu.DatePicker Then \'此处以下是label 属性 Dim it2 As RibbonMenu.DatePicker = itm dr("菜单标题") = it2.label Else If Typeof itm Is RibbonMenu.NumericBox Then Dim it2 As RibbonMenu.NumericBox = itm dr("菜单标题") = it2.label Else If Typeof itm Is RibbonMenu.TextBox Then Dim it2 As RibbonMenu.TextBox = itm dr("菜单标题") = it2.label Else If Typeof itm Is RibbonMenu.TimePicker Then Dim it2 As RibbonMenu.TimePicker = itm dr("菜单标题") = it2.label Else If Typeof itm Is RibbonMenu.ComboBox Then Dim it2 As RibbonMenu.ComboBox = itm dr("菜单标题") = it2.label Else If Typeof itm Is RibbonMenu.FontComboBox Then Dim it2 As RibbonMenu.FontComboBox = itm dr("菜单标题") = it2.Label \'此处一下是text Else If Typeof itm Is RibbonMenu.Button Then Dim it2 As RibbonMenu.Button = itm dr("菜单标题") = it2.text Else If Typeof itm Is RibbonMenu.menuButton Then Dim it2 As RibbonMenu.menuButton = itm dr("菜单标题") = it2.text Else If Typeof itm Is RibbonMenu.splitButton Then Dim it2 As RibbonMenu.splitButton = itm dr("菜单标题") = it2.text Else If Typeof itm Is RibbonMenu.toggleButton Then Dim it2 As RibbonMenu.toggleButton = itm dr("菜单标题") = it2.text Else If Typeof itm Is RibbonMenu.label Then Dim it2 As RibbonMenu.label = itm dr("菜单标题") = it2.text Else If Typeof itm Is RibbonMenu.checkbox Then Dim it2 As RibbonMenu.checkbox = itm dr("菜单标题") = it2.text Else If Typeof itm Is RibbonMenu.separator Then Dim it2 As RibbonMenu.separator = itm dr("菜单标题") = it2.Text Else If Typeof itm Is RibbonMenu.Colorpicker Then Dim it2 As RibbonMenu.Colorpicker = itm dr("菜单标题") = it2.text Else If Typeof itm Is RibbonMenu.FontComboBox Then Dim it2 As RibbonMenu.FontComboBox = itm dr("菜单标题") = it2.Text Else If Typeof itm Is RibbonMenu.ProgressBar Then Dim it2 As RibbonMenu.ProgressBar = itm dr("菜单标题") = it2.Text Else If Typeof itm Is RibbonMenu.TrackBar Then Dim it2 As RibbonMenu.TrackBar = itm dr("菜单标题") = it2.Text End If \' dr.save() Next Next Next |
-- 作者:有点蓝 -- 发布时间:2022/2/18 13:54:00 -- 1、这个是精灵数据库的问题,没有什么影响,不用管 2、应该是帮助的问题,复制其它帮助过来的,忘记改了。
|