浅谈Delphi下实现对应用程序的菜单项级别的权限控制
- 作者:admin 来源:网络 日期:2009-5-6 22:11:44
try
ExecSQL;
except
Application.MessageBox('添加Program数据时出现错误!','错误信息',mb_ok+mb_iconinformation);转载于范文中国网http://www.fw789.com。
exit;
end;
end;//ii
end;//i
end;//with
MessageBox(handle,'操作成功!','提示',MB_OK+MB_ICONINFORMATION);
End;
2.2授权程序的实现
授权程序的最好实现方式是用内含三层节点的TtreeView控件来实现,第一层显示应用
程序名称,第二层显示该应用程序主菜单的列名,第三层显示该应用程序主菜单每列中的菜单项名。当某一菜单项节点的图像指向为时(假设imageIndex=0),表示该用户对该菜单项没有操作权限;反之,当某一菜单项节点的图像为时(假设imageIndex=1),表示该用户对该菜单项有操作权限。因篇幅所限,对这一块的程序只给出以上思路及其中的一个界面
下面介绍在选择完用户名以及该用户相应的权限后,保存权限的程序(假设由Button2的Click事件触发)。
//CurOpr已指定操作员的工号
//TreeView1是菜单的节点树
//Query1为TQuery控件
type
PNodeData=^TNodeData;
TNodeData=record
AppCode:string[4];//应用程序代码
ModCode:string[6];//菜单项代码
end;
procedureTPermissionForm.Button2Click(Sender:TObject);
var
CurNode:TTreeNode;//菜单项节点
pData:PNodeData;
ii:integer;
begin
withtreeview1do
begin
//先删除该操作员原先设定的权限
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('DeleteFromHosServer..PermissionWhereOprCode=:OprCode');
Query1.ParamByName('OprCode').AsString:=CurOpr;
Query1.ExecSql;
Query1.Close;
CurNode:=Items.GetFirstNode.GetFirstChild;//Application
whileCurNodenildo
begin
if(CurNode.Datanil)and(CurNode.ImageIndex=1)then//看是否选中
begin
//往表中插入该操作员对该菜单项的操作权限。
pData:=CurNode.Data;
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('InsertintoHosServer..Permission');
Query1.Sql.Add('(IndexCode,OprCode,AppCode,ModCode)');
Query1.Sql.Add('Values(:IndexCode,:OprCode,:AppCode,:ModCode)');
Query1.ParamByName('IndexCode').AsString:=CurOpr+pData.AppCode+pData.ModCode;
Query1.ParamByName('OprCode').AsString:=CurOpr;
Query1.ParamByName('AppCode').AsString:=pData.AppCode;
Query1.ParamByName('ModCode').AsString:=pData.ModCode;
Query1.ExecSql;
Query1.Close;
end;
CurNode:=CurNode.GetNext
end;
end;
MessageBox(handle,'操作成功!','提示',MB_OK+MB_ICONINFORMATION);
end;
有了前面的几步后,最后只要在菜单加载的时候,根据表Permission表中有没有对应项就能决定每一菜单项的显示与否,这样我们就实现了对应用程序菜单项级别的权限控制。http://www.dxlww.net代写论文网
参考文献
1.刘韬,肖永顺,王宇.Delphi4.0数据库编程.北京:人民邮电出版社,1999
2.李力,李微,董恒.Delphi4.0实用编程指南重庆:四川大学出版社,1998
代写论文联系方式
联系QQ:904272800

联系信箱:904272800@qq.com

代写论文导航
客户、写手申请单
最新论文
热点论文