你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
权限管理与系统登录(四)
 

左边的分页对象PageCtrlUser设置了“用户”、“用户角色”、“角色”和“角色权限”4个选项页,每个选项页上放置一个TDBGrid对象。右边的分页对象PageCtrlInfor与左边的相对应,也设置了“用户信息”、“用户角色信息”、“角色信息”和“角色权限信息”4个选项页,每个选项页上对象的设置情况如图1右下部、图2所示,除“用户角色信息” 选项页中的“角色ID”是TCheckListBox对象外,其他都是数据感知组件,分别通过DataSource属性指向各自对应的TDataSource对象,DataField属性设置需显示数据的字段名,具体可参考图2中各个对象中显示的数据,如DBTextBirthday就表示显示Birthday字段的数据。

1.2.2 代码设计

⑴ 因为存在两种不同的用户,查询时要用到教师信息表和学生信息表,而这两个表的字段名是不同的,故在该单元文件的implementation后设计了一个全局变量“strKeyField”用于存放表的关键信息(用户ID和用户名)。

var // 存放查询所需的关键信息(用户ID和用户名)

  strKeyField :  Array[0..1] of String;

2-图“用户角色信息”选项页中的“角色IDCheckListBoxRole对象,显示的是系统中存在的所有角色及当前用户所拥有的角色信息,供系统管理员使用打勾方式分配,因此需要编制一个过程将系统角色表中的所有角色以列表的方式显示在CheckListBoxRole对象的列表框中,详细代码如下:

procedure TFormRightManage.CheckListBoxRole_AddRole;

begin

 CBoxSearchType.Style := csDropDownList;

 // 为角色ID列表框CheckListBoxRole添加角色

 CheckListBoxRole.Items.Clear;

 with DMServerDB do begin

  ADODataSetRole.First;

  while Not ADODataSetRole.Eof do begin

   CheckListBoxRole.Items.Add(ADODataSetRole.FieldValues['RoleID']

          +','+ADODataSetRole.FieldValues['RoleName']);

   ADODataSetRole.Next;

  end;

 end;

end;

设计查询按钮代码。按不同的用户类型和不同的查询类型,动态生成SQL语句。如图2右下部的“用户信息”选项页中的“用户IDDBTextUserID对象、“用户名”DBTextUserName对象和“学院”DBTextUserUnit对象,在查询教师时要需教师ID、教师名和该教师所在学院;查询学生时则要显示学号、学生名和所在班级,因此这三个对象需要根据不同的用户设置不同的字段名,相关代码如下:

procedure TFormRightManage.SBtnSearchClick(Sender: TObject);

begin

 ADODataSet_User.Close;

 if CBoxUserType.ItemIndex=0 then begin // 教师

  strSQL:='Select T.TeacherID, TeacherName, T.DepartmentID, DepartmentName, Sex, Birthday, Phone, Email';

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089