该模块的关键程序代码如下:
//单击“添加”按钮,为当前用户类别添加但前模块的授权记录
procedure TUserQxglFrm.SpeedButton1Click(Sender: TObject);
var
yhlb,cxmk:string;
begin
yhlb:=DataModFrm.USERLB.FieldByName('用户类别').AsString;//获取当前用户类别
cxmk:=DataModFrm.PRGMOD.FieldByName('模块名称').AsString; //获取当前程序模块名
if not DataModFrm.USERMOD.Locate('用户类别;授权模块', vararrayof([yhlb,cxmk]),[]) then begin
//若没找到该模块授权记录就添加并保存该记录
DataModFrm.USERMOD.Append;
DataModFrm.USERMOD.FieldByName('用户类别').AsString:=yhlb;
DataModFrm.USERMOD.FieldByName('授权模块').AsString:=cxmk;
DataModFrm.USERMOD.Post;
end;
end;
//当点击用户类别列表时,过滤并显示当前用户类别相应的用户模块授权信息
procedure TUserQxglFrm.DBLookupListBox1Click(Sender: TObject);
var
yhlb:string;
begin
yhlb:=DataModFrm.USERLB.FieldByname('用户类别').AsString;
DataModFrm.USERMOD.Filter:='用户类别='''+yhlb+'''';
DataModFrm.USERMOD.Filtered:=True;
end;
4 结语
主要阐述一种实现软件功能动态订制的方法及其具体程序实现途径,依照该方法,也可以通过控制程序功能相对应的按钮的显示隐藏或是否可用来控制用户的程序功能访问。根据需要,访问控制精度既可以到模块级,也可以控制到模块中的任意一个控件,以满足更精细的功能访问控制需求。文中代码均可在Delphi7.0环境下调试通过,此方法能够解决多用户系统的软件功能动态订制需求。
参考文献
[1]Borland公司发布的Delphi 7.0用户手册.
[2]飞思科技产品研发中心. Delphi 7数据库应用开发.电子工业出版社,2003.
|