关于基于菜单的权限管理问题 ( 积分: 100 )

  • 主题发起人 主题发起人 yqdragon
  • 开始时间 开始时间
Y

yqdragon

Unregistered / Unconfirmed
GUEST, unregistred user!
权限管理问题,只具体到菜单,不具体到功能,根据权限来对菜单MENU显示与否,我看到有人用定义一个int类型(32位)的来表示权限,根据每位是0或1来显示与否,不知道该怎么做,有谁知道的给个比较详细的思路或代码,谢谢
 
用32位Int,就是在二进制下,为1的为有效权限
不如用32位的字符串方便,如果需要32位的话
比如:1101,可代表第一,二,四个模块(菜单)有权限
 
使用MENU的TAG,简单的定义INT类型,根据权限读取显示与否就OK了
 
能否给个简单的示例啊,E-MAIL:yqdragon@163.com谢谢.
 
对每个菜单项一个权值,可以用MenuItem的tag属性保存,如新增,修改,删除三个菜单的权值分别为1,2,4(需要是2的N次方)。假设用户的权限保存在purview中,在依据权限初始化菜单时可以使用如下代码:
for i := 0 to MainMenu.Items.Count - 1 do
MainMenu.Items.Visible := (MainMenu.Items.Tag and purview) = MainMenu.Items.Tag;
 
for i:=1 to ActionList1.ActionCount-1 do
(actionlist1.Actions as Taction).Enabled :=(user_qx='1');

user_qx可以是'11000110' 1表示有,0表示无
 
11000110也可用一字节的INT表示,转换下就OK了
 
谢谢各位,大家一般都是怎么做权限的啊,如果要进一步控制窗体的按钮或者数据库的增、删功能用什么方法?想做一个相对通用的,不知道大家都怎么做的
 
如果独立控制菜单显示与否,这主要是控制是否执行此模块的一个开关。
这个权限控制好做,通过TAG的值来判断就可以了。
// 在TMainMenu菜单下建立的方法
procedure TForm1.ShowFormClick(Sender: TObject);
begin
if Sender is TMenuItem then
if (Sender as TMenuItem).Tag=1 then // Tag值等于1 表示可以打开From2窗口
Form2.Show;
end;
 
楼上说的是窗体的显示,如果具体到窗体上的按钮或者关于数据库的操作一般采用什么方法?仅提供点思路即可,有知道的可以帮解答下,分不是问题.
 

Similar threads

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