请大家讨论一下,怎样对菜单进行权限控制好一点。(100分)

  • 主题发起人 主题发起人 北斗
  • 开始时间 开始时间

北斗

Unregistered / Unconfirmed
GUEST, unregistred user!
对菜单进行权限控制。
这个问题比较简单,但是我是一个新手,想请大家多提宝贵的建议。
我想对不同的人员在进行登录的时候,根据职责范围的不同从而产生不同的菜单项目。
怎样做好一点?以前我用的是LISTVIEW从数据库中取出相应的项目然后产生相应的结点。
现在想改为菜单形式,怎样实现对菜单进行控制呢?
请各位高手指教。谢谢。。。。
 
用ActionList控件中的每一個Action來封裝你的每個功能
然後菜單項的Action屬性填入對應的Action,當用戶的權限不能操作這個Action時
令該Action的Enabled 或者 Visible為false,則對應的菜單就會有變化
 
利用Tag进行。
设置每个Action或者菜单的tag为不同数值,然后将所有权限和tag数值对应关系保存到数据库中。
没有用户登陆,使他有权限的tag值对应的菜单Enable,其他的都Disable就可以了。
 
使用ActionList,可以同时控制菜单和工具条
没有的功能,相应的Action不起用就可以了
 
看了各位的做法,但不知道具体怎样操作,可以给我一点例子吗?
barry_hwang@163.com
谢谢
 
同意shiny,的观点,强烈支持!!
 
也可以在菜单的执行代码里先进行用户权限的判断,如无该权限,给出一个提示框,提示
他不具备该项权限。还可以在用户一登录时就对他的各项权限进行判断,将他不具备的各
菜单项的visible属性设为false。
 
1)数据库中有用户权限表
含有menu_name和program_id信息

2)理解动态创建菜单技术,
赋值menu.caption:=menu_name
menu.name:=program_id
3)创建菜单事件
if TMenuItem(sender).Name='IC01' then
begin
Application.CreateForm(TForm25, Form25);
exit;
end;
 
当然其他的方法也可以,不过不是动态产生菜单的,动态的好处是客户端的菜单有无是由数据库控制的.
当然,shiny的方法使用比较的普及,依靠数据库控制权限,但菜单是固化在程序里的.
 
呵呵,来晚了,看来大家的使用结果都一样啊。:)
 
用固化的菜单,然后通过数据库中的用户数据的权限,设置菜单项的变灰或者是变亮。
 
我同意cowbird的看法,现在我在开发的这个系统中的功能授权就是这么做的,非常方便!
 
建立一张权限表,根据权限表取出数据,生成可以显示的节点,就这么简单
 
to cowbird:
==创建菜单事件
== if TMenuItem(sender).Name='IC01' then
== begin
== Application.CreateForm(TForm25, Form25);
== exit;
== end;
这里不太明白,可否指教。
 
补充:
赋值menu.caption:=menu_name
menu.name:=program_id
menu.OnClick:=MenuClick;//申明菜单事件

//创建菜单事件
procedure TForm2.MenuClick(Sender: TObject);
begin
== if TMenuItem(sender).Name='IC01' then
== begin
== Application.CreateForm(TForm25, Form25); //打开任意form
== exit;
== end;
end;
 
类似问题以前讨论过,我的例程在这里,原理与cowbird相同:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=736359
内有较多代码。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部