以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何动态显示菜单?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87156)

--  作者:shanshuizhujian
--  发布时间:2016/7/5 7:52:00
--  如何动态显示菜单?
如果我一个表的字段存了如下内容:RibbonTabs("系统设置")("系统设置")("系统表")
我该如何用这个来显示菜单?
/// 这个代码可以显示

Dim btn As RibbonMenu.Button
btn
RibbonTabs("系统设置")("系统设置")("系统表")
btn
.Enabled
= False

///



/// 但是我实际是这样的,会出错,该如何修改?
e.datarow("菜单名称")= RibbonTabs("系统设置")("系统设置")("系统表")

Dim btn As RibbonMenu.Button
btn
 = 
e.datarow("菜单名称")
btn
.Enabled
 = False

///



--  作者:Hyphen
--  发布时间:2016/7/5 9:07:00
--  
http://www.foxtable.com/webhelp/scr/1487.htm

Dim Code As String
Code = "Dim btn As RibbonMenu.Button" & vbcrlf
Code = Code & "btn = " & e.DataRow("菜单名称")  &  vbcrlf
Code = Code & "btn.Enabled = False" & vbcrlf
Code = Code & "Return True"
Functions.Remove("SetButton")
Functions.Add("SetButton",Code)
Functions.Complie()

最好的方法是存储菜单的树结构,不是存储菜单变量,参考http://www.foxtable.com/webhelp/scr/2405.htm

--  作者:大红袍
--  发布时间:2016/7/5 9:17:00
--  

表,是无法存储对象的,只能存放字符,如果要存放,那个对象必须标记为可序列化的。

 

测试了一下,菜单没有弄成可序列化的。无法直接保存,和直接还原。你要用2楼的方法动态编译。


--  作者:shanshuizhujian
--  发布时间:2016/7/5 9:56:00
--  
以下是引用Hyphen在2016/7/5 9:07:00的发言:
http://www.foxtable.com/webhelp/scr/1487.htm

Dim Code As String
Code = "Dim btn As RibbonMenu.Button" & vbcrlf
Code = Code & "btn = " & e.DataRow("菜单名称")  &  vbcrlf
Code = Code & "btn.Enabled = False" & vbcrlf
Code = Code & "Return True"
Functions.Remove("SetButton")
Functions.Add("SetButton",Code)
Functions.Complie()

最好的方法是存储菜单的树结构,不是存储菜单变量,参考http://www.foxtable.com/webhelp/scr/2405.htm

///
非常感谢,按照这个思路搞定了。


--  作者:shanshuizhujian
--  发布时间:2016/7/5 9:57:00
--  
以下是引用大红袍在2016/7/5 9:17:00的发言:

表,是无法存储对象的,只能存放字符,如果要存放,那个对象必须标记为可序列化的。

 

测试了一下,菜单没有弄成可序列化的。无法直接保存,和直接还原。你要用2楼的方法动态编译。


嗯,我按照上面的试 了一下,可以了。