Foxtable(狐表)用户栏目专家坐堂 → [求助] 遍历状态按钮后,Pressed 属性不好用?


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

主题:[求助] 遍历状态按钮后,Pressed 属性不好用?

美女呀,离线,留言给我吧!
龙潭春早
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
[求助] 遍历状态按钮后,Pressed 属性不好用?  发帖心情 Post By:2019/1/19 23:47:00 [只看该作者]

在一个功能区中,有多个功能组,每个功能组里都加有不少的状态按钮。
希望点击任何一个状态按钮时,其它按钮都被排斥而自动弹起,所以给所有的状态按钮都设置了相同的分组名。

但是测试的时候发现,同一功能组内的状态按钮工作正常;但是,不同功能组内的状态按钮却并不是互相排斥的。
如果每次点击不同功能组中的一个状态按钮,那么有多少个功能组,就有多少个状态按钮呈现 “ 按下 ” 状态。

所以,想在每个状态按钮的 click 事件中设置代码,先分别遍历各个功能组中的所有状态按钮,将其设置成 “ 弹起 ” 状态,再将要点击的动态按钮设置成 “ 按下 ” 状态。

状态按钮C1 中的代码:

Dim itm As RibbonMenu.RibbonItem

For Each itm In RibbonTabs("功能区A").Groups("功能组B1").Items
             itm.Pressed = False
Next

For Each itm In RibbonTabs("功能区A").Groups("功能组B2").Items
             itm.Pressed = False
Next

RibbonTabs("功能区A").Groups("功能组B1").Items("状态按钮C1").Pressed = True

执行这段代码,说是 itm.Pressed = False 出错,奇怪啊!

不应该吧? 要怎么改呢?

图片点击可在新窗口打开查看此主题相关图片如下:状态按钮 - 遍历后,使用 pressed 出错.png
图片点击可在新窗口打开查看




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/20 11:18:00 [只看该作者]

Dim itm As RibbonMenu.RibbonItem

 

改成

 

Dim itm As Object


 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/20 18:50:00 [只看该作者]

还是不对,改后测试,显示这个:

图片点击可在新窗口打开查看此主题相关图片如下:状态按钮 - 遍历后用 pressed 出错 2.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/20 23:06:00 [只看该作者]

参考代码

 

Dim itm As object
For Each itm In RibbonTabs("功能区A").Groups("功能组B1").Items
    If Typeof itm Is RibbonMenu.ToggleButton Then
        msgbox(123)
    End If
Next


 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/22 10:44:00 [只看该作者]

嗯 能用了

不过,有没有什么更简化一些的办法,直接遍历一个功能区里所有功能组中的各个组件,而不用一个个功能组的遍历呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/22 11:07:00 [只看该作者]

比如

 

For Each r As RibbonMenu.Tab In RibbonTabs
    output.show(r.text)
    For Each g As RibbonMenu.Group In r.Groups
        output.show(g.text)
        For Each c As object In g.Items
            output.show(c.name)
        Next
    Next
Next


 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/22 12:08:00 [只看该作者]

精彩!

对于所有的功能区、功能组、组件,遍历可执行!

不过,对于具体的一个功能区A,却不行,为什么呢?

代码:

For Each r As RibbonMenu.Tab In RibbonTabs("功能区A")
    output.show(r.text)
    For Each g As RibbonMenu.Group In r.Groups
        output.show(g.text)
        For Each c As object In g.Items
            output.show(c.name)
        Next
    Next
Next

出错:

图片点击可在新窗口打开查看此主题相关图片如下:状态按钮 - 遍历后 出错 3.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/22 12:21:00 [只看该作者]

参考

 

For Each g As RibbonMenu.Group In RibbonTabs("功能区A").Groups
    output.show(g.text)
    For Each c As object In g.Items
        output.show(c.name)
    Next
Next

 


 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/22 13:32:00 [只看该作者]

嗯 应该直接定义功能组!

多谢啦!

 回到顶部
美女呀,离线,留言给我吧!
龙潭春早
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:676 积分:4895 威望:0 精华:0 注册:2018/3/22 16:05:00
  发帖心情 Post By:2019/1/23 20:53:00 [只看该作者]

怎么遍历快速访问栏 QAT 里的组件呢?

下面代码说 “Items” 不是 RibbonMenu.QAT 的成员

For Each itm As object In QAT.Itmes
      output.show(itm.name)
Next

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