Foxtable(狐表)用户栏目专家坐堂 → [求助]有没有代码可以判断当前菜单是否是用户自定义的菜单或者是系统菜单?


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

主题:[求助]有没有代码可以判断当前菜单是否是用户自定义的菜单或者是系统菜单?

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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
[求助]有没有代码可以判断当前菜单是否是用户自定义的菜单或者是系统菜单?  发帖心情 Post By:2012/2/5 10:06:00 [只看该作者]

自己设计了菜单,定义了主表切换后菜单项目会部分显示或不显示。但当切换到系统菜单后,切换主表时会出错提示。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2012-2-6 22:14:37编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/2/5 10:15:00 [只看该作者]

1、没有必要,因为您现在是以设计者身份操作,一旦非设计者进入,您不给他留切换到系统菜单的入口,他自己用热键也切换不了;

2、判断自定义菜单的某个被隐藏的功能组或所属菜单按钮是否存在来判断是否是自定义菜单试试

3、也可以变通实现,在打开自定义菜单的代码后面向某个全局变量输入一个值,在打开系统菜单的代码后面,向这个全局变量输入另一个值,您只需要判断这个值即可。


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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
谢谢程版。但不知道如何设置。  发帖心情 Post By:2012/2/5 15:18:00 [只看该作者]

方法2:

我在MainTableChanged事件中设置如下代码:

Select Case MainTable.Name
    Case "表A"

If RibbonTabs("自定义").Visible = True Then

XXX

YYY

ZZZ

end if

Case "表B"

If RibbonTabs("自定义").Visible = True Then

AAA

BBB

CCC

end if

end select

切换成系统菜单时,再切换主表,会有出错提示。“菜单中不存在名为"自定义"的功能区。”

是不是代码设置错了?


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/2/6 1:55:00 [只看该作者]

这样试试:

……

If RibbonTabs("自定义功能区").Contains("自定义功能组") = True Then

……

 

这个自定义功能组必须是系统菜单中没有的,只有自定义菜单中才存在的


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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
还是不行啊。  发帖心情 Post By:2012/2/6 22:03:00 [只看该作者]

出错。
图片点击可在新窗口打开查看此主题相关图片如下:切换.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
已经上传附件  发帖心情 Post By:2012/2/6 22:08:00 [只看该作者]

 已经上传附件

[此贴子已经被作者于2012-2-6 22:15:08编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/2/6 22:56:00 [只看该作者]

公开的方法应该办不到吧。

偏门的方法我不会。


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/2/6 23:49:00 [只看该作者]

我在五楼的代码组合错了,仔细消化一下帮助结果应该这样,您的代码也没必要那么复杂,写代码要学会精简,试试这个代码,这也许是一个最简单的方法:

 

If  RibbonTabs.Contains(MainTable.name & "功能区") = True
    RibbonTabs("表A功能区").Visible = (MainTable.name = "表A")
    RibbonTabs("表B功能区").Visible = (MainTable.name = "表B")
    RibbonTabs("表C功能区").Visible = (MainTable.name = "表C")
    RibbonTabs("公共功能区").Visible = True
End If

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1(4).table

 

不过,贺老师还需要将这一节帮助细化,否则,很难懂,需要给出实例:

 

项目集合

功能区、功能组、工具栏、菜单按钮、组合按钮、组合框、程序菜单、配置栏等都是容器,这些组件可容纳其他菜单组件。
大多数容器类的菜单组件都有一个名为Items属性,表示其包含的菜单组件项目集合。
当然也有例外,例如程序菜单(ApplicationMenu),它有三个项目集合,所以集合的名称不是Items,请参考前面的介绍。
利用项目集合,不仅可以获得指定名称的菜单组件,我们还可以向其中增加、插入和删除菜单组件。

项目集合的方法:

方法 说明
Contains 判断是否包括指定名称的组件。

语法:

Contains(Name)

Name: 组件名称
Clear 清除所有组件
Add 增加一个组件,语法:

Add(Item)

Item: 要增加的项目
Insert 在指定位置插入一个组件。

语法:

Insert(Index, Item)

Index: 整数型,插入位置
Item: 要插入的组件。
Remove 删除指定的组件,或者删除指定名称的组件。

语法:

Remove(Name)
Remove(Item)

Name: 组件名称
Item:组件

利用项目集合,可以动态生成菜单,后面的实战演练会介绍。

[此贴子已经被作者于2012-2-7 0:00:55编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1038 积分:12915 威望:0 精华:0 注册:2011/5/29 15:19:00
谢谢程版的指点。  发帖心情 Post By:2012/2/7 0:05:00 [只看该作者]

谢谢程版的指点。

 回到顶部