那位高手会做动态生成菜单啊?

dragoner 2003-10-16 05:03:10
我做了一个ERP的软件,原来是用静态把菜单做的。但现在不行啊,员工的权限不一样啊。要根据权限表里的数据生成菜单啊?有高手会吗?
...全文
35 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
remember 2004-03-26
  • 打赏
  • 举报
回复
to fishead37(fishead)

呵呵,能在数据库中设置菜单,当然也可以建树实现啦!
早就有了啦!
tmxsl1214 2004-02-04
  • 打赏
  • 举报
回复
SC
blazingstar 2004-01-19
  • 打赏
  • 举报
回复
我两种方法都实现了。
1、根据数据库中定义权限动态生成菜单,在数据库中存放用户名和窗口名
先定义个只有一个菜单项,并且item为空的模板菜单对象,然后每层菜单都通过创建该模板对象的实例来生成。在模板对象的clicked事件中调用Open ( 窗口名 , window )
2、根据数据库中定义权限动态生成TreeView形式的菜单,在数据库中存放用户名和窗口名
方法和第1个差不多,如何生成树不用说了吧。TreeView的clicked事件中调用Open ( 窗口名 , window )
chinalht 2004-01-18
  • 打赏
  • 举报
回复
uo_mymenu lm

lm=creaet uo_mymenu
lm.text = 'Test01'
menu.item[upperbound(menu.item[]) + 1] = lm
//下面2句是为了让新加的菜单项显示出来
menu.visible=false
menu.visible=true
fishead37 2003-12-26
  • 打赏
  • 举报
回复
讓你們看一個真正的系統, 無需菜單項, 它統統都在樹控件中, 雙擊即可打開此功能模塊,
根據權限設定, 從庫中讀取相關的菜單項到樹控件中.
加了分才能看到圖片, 你把email留下.
remember 2003-12-23
  • 打赏
  • 举报
回复
哦,深刻同意!不过流星啊,你是否在长沙哦?
我有点怀疑我和你是网友耶~


不过不再长沙肯定就不是了~哈^-^
meteorshine 2003-12-12
  • 打赏
  • 举报
回复
现在的提问者, 提了问之后就不知跑到哪里去了,
解决了问题就应该结贴了啊
jiazhuo 2003-12-07
  • 打赏
  • 举报
回复
没话可说顶
meteorshine 2003-12-06
  • 打赏
  • 举报
回复
我能实现动态菜单, 我的QQ:83718520, MSN:hlzlh@hotmail.com
但你给的分也太少了点, ^_^, 哈哈, 这个问题,至少也要给100分啊

创建只有一个菜单项的菜单, 里面定义好其触发的事件是什么,还有其它一些属性,例如名称,Enable, Visible等属性, 例如:
创建一个 ufc_m_Item 菜单对象, 其属性有 String is_ClickEvent , is_MouseMoveEvent等
再为这个对象创建一个设置其属性的方法,of_SetAttrib(...)
然后创建一个全局的动态生成菜单的方法, 采用递归调用的方式,
of_CreateMenu(ref ufc_m_Item am_Parent , long al_Parent)
{
//其中am_Parent 是递归调用时的父菜单项
// al_Parent 是模块的键值, 用来获取当前菜单的子模块

long ll_ModuleCount , ll_ItemCount , ll_Index , ll_Joint

ll_ModuleCount = ids_Module.Retrieve(al_Parent)
ll_ItemCount = UpperBound(am_Parent)
FOR ll_Index = 1 TO ll_ModuleCount
am_Parent.Item[ll_ItemCount] = Create ufc_m_Item
//获取模块的一些属性
ll_Joint = ids_Module.GetItemNumber(ll_Index, "Joint")
//设置属性
am_Parent.Item[ll_ItemCount].Dynamic of_SetAttrib(...)

//递归调用, 创建其下一及菜单
of_CreateMenu(am_Parent.Item[ll_ItemCount], ll_Joint)
ll_ItemCount ++
NEXT

Return 1
}
alwaystar 2003-12-06
  • 打赏
  • 举报
回复
我在www.ourfly.com上发了一个关于动态菜单的例子,去看看吧,或许对你有帮助
emsfl 2003-12-06
  • 打赏
  • 举报
回复
自己做菜单。不用系统提供的。在窗口上加LISTBOX控件。可以把菜单做在表里。到时只要维护表数据就可以。
大狼尾巴 2003-12-05
  • 打赏
  • 举报
回复
同意 remember(忆的遗忘) 的説法。

如果菜單太多導致工作量過大,可以作一個權限設置的窗口阿,遍歷指定菜單生成一個帶有CheckBox的TreeView,然後將結果保存之。

在用的時候就和 remember(忆的遗忘) 的方法一樣了。
目前我的程序中就是這樣做的。
shizan 2003-12-01
  • 打赏
  • 举报
回复
菜单多了怎么办。12个功能模块,200多个子模块,700多个应用窗口
以前单文档,想该mdi,工作量好大啊!
不能直接用程序创建菜单(根据数据库)
zhuwc 2003-11-19
  • 打赏
  • 举报
回复
同意,顶
zx_ali 2003-11-04
  • 打赏
  • 举报
回复
同意,楼上
remember 2003-10-30
  • 打赏
  • 举报
回复
给个思路!
不需要动态生成,只要你在数据库中设置用户只能使用哪些菜单,
然后在主界面打开时,设置一个函数来遍历菜单ID,在这个函数中再设一个函数来判断这个ID是否可以enabled,不是的话就设置为false。照这个原理还可以控制到菜单相应窗口的按钮。
wantsong 2003-10-30
  • 打赏
  • 举报
回复
必须是enabled false,仅仅visible false,若加了快捷健,用户通过快捷健一样可以操作
daomei 2003-10-29
  • 打赏
  • 举报
回复
动态生成菜单也许可能,不过应该很麻烦,至今没看见过,简单方法就象楼上所说的,设置是否可见.
xlch_csdn 2003-10-16
  • 打赏
  • 举报
回复
我想是不是可以根据权限来决定菜单项的ENABLE.

604

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 控件与界面
社区管理员
  • 控件与界面社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧