以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]单击菜单组件函数问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=93723)

--  作者:pcxjxjhkw
--  发布时间:2016/12/5 16:45:00
--  [求助]单击菜单组件函数问题

如何写一函数:

单击菜单上任意一组件,返回该组件的上一级,直至最顶级。如单击【打开】,返回:主菜单\\功能区\\功能组\\...\\...\\打开。有可能是多级组合按钮。

 

[此贴子已经被作者于2016/12/7 13:20:41编辑过]

--  作者:有点蓝
--  发布时间:2016/12/5 17:22:00
--  
Dim r As object = BaseMainForm.controls("C1Ribbon1")
Dim mu  = r.Tabs("Common").Groups("Data").Items("AddRow").Items("AddRow")
Output.Show(mu.text)
Output.Show(mu.Parent.text)
Output.Show(mu.Parent.parent.text)
Output.Show(mu.Parent.parent.Tab.text)

--  作者:pcxjxjhkw
--  发布时间:2016/12/5 19:09:00
--  
以下是引用有点蓝在2016/12/5 17:22:00的发言:
Dim r As object = BaseMainForm.controls("C1Ribbon1")
Dim mu  = r.Tabs("Common").Groups("Data").Items("AddRow").Items("AddRow")
Output.Show(mu.text)
Output.Show(mu.Parent.text)
Output.Show(mu.Parent.parent.text)
Output.Show(mu.Parent.parent.Tab.text)

1.r的级数不确定哟,如何判断已返回到最高一级tab?

2.如何将Sender写入函数中?

3.单击的可能是功能区、程序菜单、快速访问栏、配置栏、上工具栏、下工具栏、快捷菜单中的某一组件,也可能是一窗口中的组件,如何判断所单击的组件属于哪一类?

 

谢谢了

[此贴子已经被作者于2016/12/5 19:37:29编辑过]

--  作者:有点蓝
--  发布时间:2016/12/5 20:37:00
--  
很麻烦,菜单事件里没有办法获取当前菜单层次,只能靠递归所有菜单进行判断,可以参考下这个
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=52013


--  作者:pcxjxjhkw
--  发布时间:2016/12/5 23:28:00
--  

Dim e As  Object = Args(0)  \'\'\'单击的菜单组件
Dim str As String = e.Sender.Name
\'\'\'\'
Dim a As  Object = e.Sender.Parent

Do While a Is Nothing
    a = a.Sender.Parent.Name
    str = str & "\\" & a.Name
Loop


Return str


\'\'\'此函数想实现:单击菜单的某一组件,返回该组件的所有父级.,可快捷定位单击的组件.
但Parent报错误,请狐爸及各位老师指导,谢谢


--  作者:有点蓝
--  发布时间:2016/12/6 9:19:00
--  
菜单事件没有Parent的,只能按4楼方法解决
--  作者:pcxjxjhkw
--  发布时间:2016/12/6 9:23:00
--  

或者,狐爸给每个组件一个唯一ID


--  作者:有点色
--  发布时间:2016/12/6 10:04:00
--  
以下是引用pcxjxjhkw在2016/12/6 9:23:00的发言:

或者,狐爸给每个组件一个唯一ID

 

你命名规范不就好了。各种控件,命名为对应的层级关系,如 功能区1_功能组2_某某控件


--  作者:pcxjxjhkw
--  发布时间:2016/12/6 10:09:00
--  
以下是引用有点色在2016/12/6 10:04:00的发言:

 

你命名规范不就好了。各种控件,命名为对应的层级关系,如 功能区1_功能组2_某某控件

也有弊病,改动一处,就要全部改动。

 

最好有Parent属性。

 

 


--  作者:pcxjxjhkw
--  发布时间:2016/12/6 10:58:00
--  
各位老师,问题还没解决呀!