以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]有没有代码可以判断当前菜单是否是用户自定义的菜单或者是系统菜单?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=16194)

--  作者:pc005637
--  发布时间:2012/2/5 10:06:00
--  [求助]有没有代码可以判断当前菜单是否是用户自定义的菜单或者是系统菜单?
自己设计了菜单,定义了主表切换后菜单项目会部分显示或不显示。但当切换到系统菜单后,切换主表时会出错提示。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

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

--  作者:程兴刚
--  发布时间:2012/2/5 10:15:00
--  

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

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

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


--  作者:pc005637
--  发布时间: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

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

是不是代码设置错了?


--  作者:程兴刚
--  发布时间:2012/2/6 1:55:00
--  

这样试试:

……

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

……

 

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


--  作者:pc005637
--  发布时间:2012/2/6 22:03:00
--  还是不行啊。
出错。
图片点击可在新窗口打开查看此主题相关图片如下:切换.png
图片点击可在新窗口打开查看

--  作者:pc005637
--  发布时间:2012/2/6 22:08:00
--  已经上传附件

 已经上传附件

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

--  作者:czy
--  发布时间:2012/2/6 22:56:00
--  

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

偏门的方法我不会。


--  作者:程兴刚
--  发布时间: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
--  发布时间:2012/2/7 0:05:00
--  谢谢程版的指点。
谢谢程版的指点。