你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
权限管理与系统登录(二)
 

// 各个角色是否存在对应的菜单项

      while not ADODataSetRole.Eof do begin

       // 不是系统管理角色(系统管理拥有所有权限),则添加

       if ADODataSetRole.FieldValues['RoleID']<>Role_SystemAdmin then begin

       // 不存在该角色对应的权限,则添加(查询字段,查询字段,需要返回值的字段)

        V := ADODataSetRoleRight.Lookup('RoleID;MenuItemName',

VarArrayOf([ADODataSetRole.FieldValues['RoleID'], Menu.Name]), 'RoleRight');

        if (VarType(V) in [varNull]) then begin

         ADODataSetRoleRight.Append;

         ADODataSetRoleRight.FieldValues['RoleID'] := ADODataSetRole.FieldValues['RoleID'];

         ADODataSetRoleRight.FieldValues['MenuItemName'] := Menu.Name;

         ADODataSetRoleRight.FieldValues['MenuRemark'] := Menu.Caption;

         ADODataSetRoleRight.FieldValues['RoleRight'] := 0;

         ADODataSetRoleRight.Post;

        end;

       end;

       ADODataSetRole.Next;

      end;

      ADODataSetRoleRight.Filter :='';

     end;

    end;

    Exit;

   end

   else begin  // 是一个含有子菜单的菜单项目

    for MenuRow := 0 to Menu.Count-1 do begin

      SearchSubMenu( Menu.Items[MenuRow] );

    end;

   end;

  end;

 begin

 // 这里仅对主菜单进行权限设置

   if (ObjName Is TMainMenu) then begin

 // 遍历菜单中的每个菜单项

     for MenuCol := 0 to (ObjName as TMainMenu).Items.Count-1 do begin

       MenuTemp := (ObjName as TMainMenu).Items[MenuCol];

       SearchSubMenu( MenuTemp );

     end;

   end;

 end;

因篇幅有限,AddRoleRight过程仅对主菜单中的菜单项设置使用权限,第48-51行代码用于遍历菜单中的每个主菜单项,并递归调用SearchSubMenu过程完成每个下级菜单项的遍历工作;第141631行代码用于遍历角色表中的每个角色;第20-29行先判断该菜单项目在角色权限表中是否存在,若不存在则在角色权限表中添加该对象;第38-42行代码表示检测到一个含有子菜单的菜单项目,则再递归调用SearchSubMenu过程完成其下级所有子菜单项目的检测。如此执行当AddRoleRight调用结束时,则菜单中的所有菜单项目都自动地添加到ADODataSetRoleRight所指向的角色权限表RoleRight中。

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089