delphi实现权限管理.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
delphi实现权限管理 PAGE PAGE 1 Delphi下实现对应用程序的菜单项级别的权限控制 河海大学计算机及信息工程学院 张富国 摘要:本文介绍了一个通用的基于菜单项级别的权限控制方法,分析了它所要解决的主要技术问题,并给出解决这些技术问题的具体步骤。 关键词: 权限管理 Delphi TmainMenu 菜单下载 授权 菜单加载 权限管理一直是应用程序所普遍关心的事,如果能实现应用程序菜单项级别的用户权限控制,那肯定是大家所向往的事。 1. 原理 我们知道菜单项的visible属性可以用来控制菜单项的显示,如果数据库中的某个字段能唯一地表示具体的菜单项的位置,而同一表中的另一字段用来表示用户代码,那么我们就可以通过在加载菜单时检查数据库中是否存在用户代码和某一菜单项的记录来控制该菜单项的显示,从而达到权限管理。 考虑到一个项目会有许多应用程序需要授权,所以建表Application 表名 Application 字段名 类型 说明 AppCode Char(4) 应用程序代码 AppName Varchar(20) 应用程序名称 另外,为了使授权程序执行时能显示各应用程序菜单的各项内容,以便系统管理员能根据菜单项内容进行授权,需先在数据库中保存菜单的具体内容,所以再建一表Module。通过编制通用的菜单下载程序来把每一菜单的内容下载到该表中,以便授权程序执行时调用。 表名 Module 字段名 类型 说明 ModCode Char(6) 菜单项代码(两位应用程序代码+两位列号+两位行号) ModName Varchar(20) 菜单项名称 PrgCode Char(2) 菜单所代表的应用程序代码 MenuCol INT 菜单项所处的列 MenuRow INT 菜单项所处的行 由上可知,我们要编制菜单下载程序、授权程序和菜单加载程序。 2.具体实现 菜单下载程序的实现 菜单下载程序须由主菜单Form上某一控件(如为Button1)激活。 // 获得主菜单矩阵,自动下载程序菜单 procedure TMainMenuForm.Button1Click(Sender: TObject); var mn_col,mn_row : integer ; //列号和行号 i,ii : integer ; //循环变量 ss : string ; // str_menu_col,str_menu_row : string; begin mn_col := MainMenuForm.MainMenu.Items.Count; //获得菜单列数 //把菜单列记录到Module表中 for i := 1 to mn_col do begin ss := MainMenuForm.MainMenu.Items[i-1].Caption; //获得列名称 if i < 10 then str_menu_col := '0' + inttostr(i) else str_menu_col := inttostr(i); //两位列号 str_menu_row := '00'; //行号为零 Close; SQL.Clear ; SQL.Add (' Insert into HosServer..Module ') ; SQL.Add (' (ModCode , ModName, PrgCode, MenuCol, MenuRow)') ; SQL.Add (' values (:mod_code , :mod_name, :prg_code,:menu_col,:menu_row) ') ; ParamByName('mod_code').AsString := PrgCode + str_menu_col + str_menu_row ; //PrgCode为菜单所在应用程序代码,已在外部定义值 ParamByName('mod_name').AsString := ss; ParamByName(

文档评论(0)

185****9651 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档