网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Delphi
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.用DEPHI为应用软件建立注册机制.
.Delphi开发经验四则.
.Delphi编程规范1.0.0.0.
.Self-Delete程序之Delphi版本,终.
.移动无标题栏窗口.
.以远程计算机上的用户身份访问Co.
.DBGrid使用全书(三).
.远程控制篇:模拟按键.
.SQL在Delphi数据库程序设计应用浅.
.Delphi中如何编写图像解析组件.
.动态更新DBGrid的颜色.
.Kylix预览.
.李维看Delphi2006(DeXter).
.DBGridEh实现单击标题栏排序方法.
.delphi7找不到TBDEClientDataSet.
.Delphi中布尔类型辨析.
.软件启动画面中启动状态的显示.
.delphi函数参考手册.
.dbgrideh如何实现点击标题排序.
.WANT的心得.

在Delphi技巧实现权限管理

发表日期:2006-2-4


 

在DELPHI中技巧实现权限管理
 
 在运用DELPHI编制一些应用系统时,有很多时候都需要给不同的用户赋予不同的权限,而不同的系统又有不同的权限分配方式,如果在程序中去为每一位用户分配权限的话,不仅使得程序的编制十分麻烦,而且也不利于管理!笔者近日想得一自认为比较好的方法,愿与大家共享,并望各位多指教!

 在很多的系统中,权限通常是被分成几级的。每一级的用户所能实现的操作是不同的,而实现这一功能的方法一般都是让不同权限的用户见到不同的菜单。简单的说就是对不具有某一权限的用户这一菜单就是不可见的!为了实现这一控制,程序员们往往得花费很多的时间去做这一模块,浪费了很多宝贵的时间!

 笔者的想法是:如果设一个二维数组,第一维代表第一级菜单,第二维代表子菜单,每一个数组元素只存储0或1这两个数,某一权限的用户对应着一个二维数组,而这个数组又代表了相应的菜单。给某一级别的用户分配权限后,他便拥有了一个相应的数组。登录时,从数组中取出各个元素的值,如果为1则相应的菜单出现,为0则不出现菜单。用这种方式不但可以分级(同一级用户的数组相同),还能实现在不同的用户间实现权限细分,只要你修改相应的数值为0或1即可!

 上面是一个简单例子的运行结果。
下面是部分源程序(这仅是一个解释性的例子程序),为了简便,程序中只有一个窗体和一个主菜单。在创建窗体时初始化数组M,显示时读出数组值并通过设置菜单的Enabled属性或者Visible属性的True或False来控制显示!!
var
  Form1: TForm1;
  m:array[0..1,0..4] of integer;//定义存储的数组
  i,j:integer;//定义循环的变量

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin //读出数字并控制菜单的显示
   for i:=Low(m) to High(m) do
      for j:=Low(m[i]) to High(m[i]) do begin
         if m[i][j]=0 then MainMenu1.Items[i].Items[j].Enabled:=false
         else MainMenu1.Items[i].Items[j].Enabled:=true;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin //下面是初始化
   k:=0;
   for i:=Low(m) to High(m) do
      for j:=Low(m[i]) to High(m[i]) do
         if (j mod 2)=0 then m[i][j]:=1
         else m[i][j]:=0;
end;

上一篇:Delphi程序与Chm帮助关联的简单实现 人气:4303
下一篇:有关TDataSet的研究 人气:4057
浏览全部Delphi的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐