Foxtable(狐表)用户栏目专家坐堂 → 快捷菜单有问题,请修正!


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

主题:快捷菜单有问题,请修正!

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
快捷菜单有问题,请修正!  发帖心情 Post By:2009/10/5 17:59:00 [显示全部帖子]

对于快捷菜单集合中的所有命令,设置其Enabled属性均有效。
但是,对于ContextCommandMenu(子菜单),设置其Enabled属性无效!如以下代码就根本不起作用:
ContextMenus("Cell").Items("Filter").Enabled = False

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/5 20:24:00 [显示全部帖子]

呵呵,不是这个问题,把Items去掉只是简写而已。
快捷菜单中有两种类型,一个是ContextCommand(菜单命令),一个是ContextCommandMenu(子菜单)。
Enabled属性对于菜单命令是正常的,但对于子菜单无效。
在默认菜单下,通过命令窗口试一下这个代码就知道了:ContextMenus("Cell").Items("Filter").Enabled = False。筛选子菜单还是没有被禁止。
[此贴子已经被作者于2009-10-5 20:26:39编辑过]

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/7 12:20:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-10-7 11:02:00的发言:
For Each cmd as RibbonMenu.ContextCommand in  ContextMenus("Cell").Items("Filter").Items
    cmd.Enabled = False
Next

这个代码只能对子菜单下的ContextCommand有效吧?如果该子菜单下又有子菜单,估计就不行了。
有没有什么办法可以对Items集合中的所有项目都遍历一遍?其实,功能区菜单中的Groups也存在这样的问题:该组中有标准按钮,也可能有菜单按钮、复选按钮。。。想读取该集合中的全部项目很麻烦。因为遍历该集合的时候,必须要先定义一个类型。如果集合中没有这种类型,还会出错。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/7 12:28:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-10-7 11:02:00的发言:
菜单控件的问题,我解决不了
呵呵,你都是狐狸他爸了,怎么选择购买的控件还有问题?

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/8 10:51:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-10-8 9:16:00的发言:
有解的,大家自己先想想

就拿菜单中的Group来说吧:一个组里有不同类型的菜单组件,如标准按钮、菜单按钮、复选按钮等等。怎样才能对该组中的Items全部遍历一遍呢?是不是在该集合中再嵌套一个组件类型的循环?如果是这样的话,那么怎样才能得到菜单组件的类型呢?
就是因为无解,我只好将“用户权限管理”中的“可使用菜单功能”只设置到了group这一级。请老六公布答案吧,谢谢!


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/8 11:05:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-10-8 10:53:00的发言:
group没有这个问题啊,快捷菜单才有。
我只是一个想法,先要测试一下,稍等。

    group本身是没问题,但我现在是想对group里面的各个项目进行Enabled限制。由于Group里的Items包含各种不同类型的项目,在用For Each对其循环设置的时候,怎么定义项目类型?难点就在这里。
    比如,下面的代码只能读取tj组里的各个按钮项目:
For Each xm as RibbonMenu.Button in RibbonTabls("A").Groups("Tj").Items
    Output.Show(xm.Name)
Next
    如果该组里有其它类型的项目呢?怎样才能一次性的读取全部项目?感觉很麻烦。

[此贴子已经被作者于2009-10-8 11:12:01编辑过]

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/8 11:23:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-10-8 11:21:00的发言:
For Each xm as Object in RibbonTabls("A").Groups("Tj").Items
   xm.Enabeld = False   
Next

OK,太棒了,忘了还有个Object!


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/8 11:35:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-10-8 11:22:00的发言:

快捷菜单比较复杂,用自定义函数:

确实厉害!函数还可以直接调用自身!
子菜单这样就可以被全部禁止了  图片点击可在新窗口打开查看


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/8 18:38:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-10-8 11:22:00的发言:

快捷菜单比较复杂,用自定义函数

下午在用直接定义好的ContextCommandMenu类型去测试时是没问题。但是,当把它用到项目中,通过Items集合进行调用时,又出问题了。原因就在于,GetType无法得到准确的ContextCommandMenu类型。
在命令窗口测试发现,本来是ContextCommandMenu类型的“筛选”,也变成ContextCommand了。看来这个问题还要请老六费心解决一下。
Dim mnu as RibbonMenu.ContextMenu = ContextMenus("Cell")
For Each mnumc as Object in mnu.Items
    Output.Show(mnumc.Text & "," & mnumc.GetType.Name)
Next


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/10/8 18:50:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-10-8 18:47:00的发言:

我用8楼的文件测试,可以啊:
Dim abc As RibbonMenu.ContextCommandMenu = ContextMenus("Cell").Items("Filter")
Functions.Execute("test",abc,false)

我下午也是用你这种办法测试的,由于这是事先定义好了ContextCommandMenu类型,所以正常通过。
但是,在对Items中的所有项目进行循环判断时,就只能用Object。
试下18楼的代码就知道了。我也是本以为解决了的。

[此贴子已经被作者于2009-10-8 18:55:23编辑过]

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