首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么做菜单权限管理(要求很简单有一串字符111100,1有权限,0无权限)

2012-02-28 
如何做菜单权限管理(要求很简单有一串字符111100,1有权限,0无权限)如何做菜单权限管理(要求很简单有一串字

如何做菜单权限管理(要求很简单有一串字符111100,1有权限,0无权限)
如何做菜单权限管理(要求很简单有一串字符111100,1有权限,0无权限)

权限表只有一个如下:

xm qx pass

系统管理员 111111111111 1231 
张三 010011110010 41132



[解决办法]
楼主不嫌麻烦的话可以在form.create属性下写代码去判断用户对各菜单的权限。
先读取权限值存入str变量,然后用copy函数取得各位的数值:q1 := copy(str,1,1)
再进行判断,if q1=0 then N1.enable := false;
[解决办法]
1、将所有菜单全部不可见或者不可用;
2、读取权限值 cs;
3、循环用 and 找出值不为 0 的权限值,然后找到相应菜单,然后让其可见或者可用,例如:
for i := 0 to 31 do begin
c := 1 shl i;
if (cs and c) > 0 then begin
...
end;
end;

[解决办法]
代码最少的办法: 在集合中(如数据库)保存各个控件(按扭/菜单/等)的name,登录时遍历窗体控件,不同用户查询的集合不同,非集合内的name一律禁用(或设置不可见)。

[解决办法]
1、将所有菜单全部不可见或者不可用;
2、读取权限值 cs(字符串值);
for i := 1 to Length(CS) do
begin
菜单.Visible:=Bool(strtoint(CS[i]));
end;
[解决办法]
自动遍历得出所有菜单项,对每个菜单项进行权限设置,即设置有权操作的用户,按照遍历菜单顺序,为每个用户生成一个权限字符串保存,然后将菜单顺序保存。
启动后,讲菜单顺序读取到一个队列或栈中,通俗的点说就是读取到一个listbox中保存,在进行菜单操作时,根据菜单项内容,得出菜单在队列中序号,然后获取用户权限字符串相应位置的字符内容,1有权操作,0无权操作
[解决办法]
有更简单的。
var
s:String;

s:=adoquery1.FieldByName('qx').asstring;

btn1.Enabled:=s[1]='1';
btn2.Enabled:=s[2]='1';
btn3.Enabled:=s[3]='1';
硬写吧。
[解决办法]
我写了一个,大家给点意见。测试可行。

Delphi(Pascal) code
function preOrder(sender:TObject;no:integer):integer;var  node:TMenuItem;  root:TMainMenu;  i:integer;begin//  result:=no;  if(sender is TMainMenu) then begin    root:=sender as TMainMenu;    if root<>nil then      for i:=0 to root.Items.Count-1 do begin        inc(result);        result:=preOrder(root.Items[i],result);      end;  end  else begin    node:=sender as TMenuItem;    doSomeThing(node,'1000111110100',no);    if node<>nil then begin      for i:=0 to node.Count-1 do begin        inc(no);        result:=preOrder(node.Items[i],no);      end;    end;  end;end;procedure doSomeThing(node:TMenuItem;right:string;no:integer);begin    //  node.Enabled:=right[no]='1';end;
[解决办法]
Delphi(Pascal) code
function GetNum(Popnum: string; Position: Byte): Boolean;begin    if Copy(Popnum, Position, 1) = '1' then        Result := True    else        Result := False;end; 

热点排行