以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 批量设置功能区的状态按钮,怎么老是报错呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=134112) |
-- 作者:龙潭春早 -- 发布时间:2019/4/27 19:13:00 -- [求助] 批量设置功能区的状态按钮,怎么老是报错呢? 想在主菜单的全局事件Click中,统一设置一下功能区A的一批状态按钮。 感觉没有错误,但是下面的代码怎么老是报错呢? 怎么改呢? For Each g As RibbonMenu.Group In RibbonTabs("功能区A").Groups For Each itm As object In g.items If Typeof itm Is RibbonMenu.Togglebutton Then If itm = e.Sender Then MainTable = Tables(itm.Name) Dim tl As Table = Tables(itm.Name) For Each cl As Col In tl.Cols cl.Visible = True Next Tables(itm.Name).filter = "" End If End If Next Next 显示这个,要怎么为类型定义运算符 “=” 呢? |
-- 作者:有点甜 -- 发布时间:2019/4/28 10:15:00 -- If itm.name = e.Sender.name Then |
-- 作者:龙潭春早 -- 发布时间:2019/4/28 14:24:00 -- 嗯 问题解决了。 不过,甜老师,感觉 If itm = e.Sender Then 在语法上也对吧? 定义 itm 为当前触发事件的组件 e.Sender,怎么会出错呢?
|
-- 作者:有点甜 -- 发布时间:2019/4/28 14:48:00 --
两个对象之间,无法直接比较。只能比较它们的某些属性。
|
-- 作者:龙潭春早 -- 发布时间:2019/4/28 16:44:00 -- 哦 谢谢啦! |
-- 作者:龙潭春早 -- 发布时间:2019/4/30 19:38:00 -- 【问题】 下面这段代码中,定义tb为功能区类型,并且遍历了功能区。 在Select Case e.tb.Name中,用 e.tb.Name 表示当前的功能区。 但是,在代码编辑器确认的时候,出现下面的问题。 为什么呢? 怎么解决呢? 【代码】 For Each tb As Ribbonmenu.Tab In RibbonTabs For Each g As RibbonMenu.Group In tb.Groups For Each itm As object In g.items Select Case e.tb.Name Case "功能区A" If g.Name = tb.Groups("功能组A").Name Then If itm.Name = e.Sender.Name Then Forms("窗口1").open() Forms("窗口1").text = "产品分类: " & e.Sender.Text \' 窗口个性化 ! End If End If Case "功能区B", "功能区C" MainTable = Tables(e.Sender.name) For Each cl As Col In Tables(e.Sender.name).Cols cl.Visible = True Next Tables(e.Sender.Name).filter = "" End Select Next Next Next |
-- 作者:有点蓝 -- 发布时间:2019/4/30 20:20:00 -- Select Case tb.Name |
-- 作者:龙潭春早 -- 发布时间:2019/4/30 22:54:00 -- 之前就是按照 Select Case tb.Name 这么用的。 但是这段代码,放到主菜单的全局事件Click中之后,会出现混乱。 点击任何菜单按钮,都会执行打开以该按钮名称为表名的表, 相当于执行了 MainTable = Tables(e.Sender.Name)
比如,6楼 的 Case "功能区A" 下的那段代码,应该是只打开 “窗口1”, 但是,打开窗口1后,还会同时执行 MainTable = Tables(e.Sender.Name),打开相应的表。 单击任何一个按钮,比如 “切换” 按钮,出现这个: 每次点击确定后,都再次出现一次该截屏的内容,第二次点击确定后,出现: 就是因为出现了上面的这些问题, 才想到是不是要用当前功能区 e.tb.Name,来强化界定 Case 的限制功能。 但是,为什么会出现这样的问题呢? 怎么解决呢? [此贴子已经被作者于2019/4/30 22:59:09编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/4/30 23:07:00 -- For Each tb As Ribbonmenu.Tab In RibbonTabs Select Case tb.Name Case "功能区A" For Each g As RibbonMenu.Group In tb.Groups If g.Name = "功能组A" Then For Each itm As object In g.items If itm.Name = e.Sender.Name Then Forms("窗口1").open() Forms("窗口1").text = "产品分类: " & e.Sender.Text \' 窗口个性化 ! End If Next End If Next End Select Next |
-- 作者:龙潭春早 -- 发布时间:2019/4/30 23:24:00 -- 嗯 之前也是这么单独设置的功能区代码。 后来要处理的功能区多了,都要对其中的按钮进行批量的设置,而按钮的处理方法也不一样。 所以,想用 6楼 的方法合成设置: 先统一遍历所有的功能区、功能组和项目,再用 Select Case 分别设置各个功能区。 这样能够节省每个功能区单独的遍历操作,减少代码和工作量。 唉,看样子是做不到了!
|