权限控制(delphi actionlist)

权限控制(delphi actionlist)权限控制 delphiTActio 方案 在软件开发中 为软件加入权限控制功能 使不同的用户有不同的使用权限 是非常重要的一项功能 由其在开发数据库方面的应用 这项功能更为重要 但是 要为一个应用加入全面的权限控制功能 又怎样实现呢 大家知道 现在的应用 一般均以菜单访问功能的形式出现 按照常规的做法 只要让注册进入应用的不同用户 可以访问不同的功能菜单 从而实现功能权限的控制 但是 有

procedure TfrmMain.SetUserExecute(Sender: TObject);

begin

   frmUser.showModal;

end;

在理解了Delphi中的TActionList及TAction之后,就可以看看功能权限的具体实现方法。

第一步,建立两张表,一张表存储用户信息,另一张表存储权限定义。

UserRight表结构如下:

procedure TfrmUser.N1Click(Sender: TObject);

var

   i:Integer;

   Action:TAction;

begin

//Add Action into user right cds.

   with frmMain do begin

     for i:=0 to ActionList1.actioncount-1 do begin

       Action:=ActionList1.Actions[i];

      cdsUserRight.AppendRecord([cdsUser.FieldByName(’userName’).AsString,TAction(Action).Caption,TAction(Action).Enabled,i]);

    end;

  end;

end;

第三步,可以用Grid对上一步产生的表进行编辑操作

procedure TfrmMain.FormCreate(Sender: TObject);

const

   testUser=’yh’;

var

   cdsRight:TClientDataSet;

   i:Integer;

begin

  //set right of function

   cdsRight:=TClientDataSet.Create(self);

   try

   cdsRight.LoadFromFile(’Right.CDS’);

   cdsRight.AddIndex(’id’,’UserName;ActionCaption’,[],’’,’’,0);

   cdsRight.IndexName:=’id’;

  for i:=0 to ActionList1.ActionCount-1 do begin

     if cdsRight.FindKey([TestUser,TAction(ActionList1.Actions[i]).Caption]) then

     TAction(ActionList1.Actions[i]).Enabled:=cdsRight.FieldByName(’ActionEnable’).AsBoolean;

   end;

   finally

     cdsRight.Close;

     cdsRight.Free;

  end;

end;

这段代码中,假设当前的用户ID为yh,同时只设定了功能的Enable属性

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177598.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:08
下一篇 2026年3月26日 下午7:08


相关推荐

  • 关于架设流媒体服务器与DRM加密问题

    关于架设流媒体服务器与DRM加密问题最近一个月一直要研究基于 MSMediaServe 与 DRM 结合的问题 主要用途为架设一个流媒体网站 网站最重要的功能为对视频的保护 于由我开始研究何种技术能对视频加密与解密 最初我确定的三种方案 第一种 种用微软的 DRM 加密方式 该方式需要架设专门的证书服务器 其原理为用证书对视频进行加密打包 因为打包后的视频会在视频的头部加一个校验头 可以到固定的证书分发页面

    2026年3月19日
    2
  • 联想st510开卡软件_固态硬盘修复(慧荣sm2246XT主控开卡教程)

    联想st510开卡软件_固态硬盘修复(慧荣sm2246XT主控开卡教程)本帖最后由lwj2996868501于2019-3-2513:12编辑此教程仅适用于固态硬盘且主控SM2246XT的,不是这个主控的就没必要看下去了!准备工具:起子,镊子(铁丝也行),坏固态硬盘,sata转USB转接卡(硬盘盒也可以),慧荣sm2246XT开卡工具(此帖子只提供一个版本的工具,其他版本自行网上下载,这个主控开卡工具版本很多具体用什么版本网上找就找得到界面都是一样的。不用一…

    2022年4月27日
    497
  • 《Grok3》API调用方法

    《Grok3》API调用方法

    2026年3月15日
    2
  • Shell 脚本中如何使用make命令

    Shell 脚本中如何使用make命令最近开发的项目中需要编写 Shell 脚本对整个工程进行自动化编译 即在 Shell 脚本中使用 make 命令来进行编译 下面回顾一下 Shell 脚本中如何使用 make 命令 nbsp nbsp nbsp nbsp 在开发一个系统时 一般是将一个系统分成几个模块 这样做提高了系统的可维护性 但由于各个模块间不可避免存在关联 所以当一个模块改动后 其他模块也许会有所更新 当然对小系统来说 手工编译连接是没问题 但是如果是一个大系统

    2026年3月18日
    1
  • 一阶惯性环节matlab编程_matlab一阶惯性环节

    一阶惯性环节matlab编程_matlab一阶惯性环节该楼层疑似违规已被系统折叠隐藏此楼查看此楼我照着网上的程序自己改出来的程序是这样的clc;clear;ts=0.001;%采样时间sys=tf(-53,[19926,100],’ioDelay’,540);%tf是传递函数,用来实现G(s);在自动控制领域经常用到,dsys=c2d(sys,ts,’z’);%把控制函数离散化,转化…

    2022年10月4日
    4
  • C语言实现关机程序

    C语言实现关机程序这次写一个关机程序,要知道关机程序是shutdown这是关机指令。但这是系统指令,所以要调用执行系统命令的函数,system,但是也要引system的头文件:stdlib.h边写代码边解释#include<stdio.h>#include<stdlib.h>//调用system函数所需的头文件#include<string.h>//调用strcmp所需的头文件intmain(){charinput[20]={0};//这里是创建一个存储字符的数

    2022年7月22日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号