PB菜单问题: 如何动态改变菜单属性?
求教各位:
菜单在编辑器中做好后,在程序运行中,我想让不同的用户使用不同的菜单。
我先编辑了一个菜单项的全集,每个用户根据他(她)的权限不同,使用不同的子集。
不知大家有什么样的方案?
如果不一大堆if或case不说也罢。
分数不够可以另加。
[166 byte] By [
bjay-ben] at [2007-12-11]
//====================================================================
// [PUBLIC] Subroutine f_set_user_menu 在 f_set_user_menu ( ref menu amenu )
//--------------------------------------------------------------------
// 说明:根据用户权限(在朗立安全中等到的用户权限串gs_emp_qx)
//--------------------------------------------------------------------
// 参数:
//
// 参数1:[reference] menu amenu
// 说明:要对其进行设置的菜单项
//--------------------------------------------------------------------
// 返回: (None)
//--------------------------------------------------------------------
// 作者: cwl 日期: 2001.01.10
//朗立安全平台:菜单设置
//使用递归算法,加入安全控制设置菜单
//以下代码使用:
//menu lmenu
//lmenu = MenuId
//f_set_user_menu(lmenu)
//====================================================================
string ls_classname,ls_useable
ls_classname = classname(amenu)
if ( pos(gs_emp_qx,amenu.text)>0) then
amenu.enabled=true
amenu.visible=true
amenu.ToolbarItemVisible=true
else
if amenu.ToolbarItemText<>'' then
amenu.visible=false
amenu.enabled=false
else
amenu.enabled=false
end if
amenu.ToolbarItemVisible=false
end if
integer li_numberOfItems, li_index
li_numberofitems = upperbound(amenu.item[])
FOR li_index = 1 TO li_numberofitems
f_set_user_menu(amenu.item[li_index])
NEXT
说明:
将用户的菜单权限转化成每个菜单名相加的字串就可以了。
使用时只要:
//设置菜单权限
menu lmenu
lmenu = MenuId
f_set_user_menu(lmenu)
我已经在好几个项目中做过了,很好用的。