PB菜单问题: 如何动态改变菜单属性?

求教各位:
菜单在编辑器中做好后,在程序运行中,我想让不同的用户使用不同的菜单。
我先编辑了一个菜单项的全集,每个用户根据他(她)的权限不同,使用不同的子集。
不知大家有什么样的方案?
如果不一大堆if或case不说也罢。
分数不够可以另加。
[166 byte] By [bjay-ben] at [2007-12-11]
# 1
//====================================================================
// [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)

我已经在好几个项目中做过了,很好用的。
llitcwl-中国龙 at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...
# 2
其实菜单权限的控制就是菜单的遍历
菜单项有一个属性数组Item[],定义了其下级的菜单项。
menu_name.item[i].visible=false //将该菜单项无效
用递归方式实现
powerbu-变 at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...
# 3

用动态菜单,自己生成一个菜单就可以了。
参考 http://www.liulee.net

liulee-流方 at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...
# 4
我先试试,大家不要急。
bjay-ben at 2007-10-24 > top of Msdn China Tech,PowerBuilder,基础类...