procedure TFormRightManage.PageCtrlInforChange(Sender: TObject);
begin // 使左右两个分页组件保持联动
PageCtrlUser.ActivePageIndex:=PageCtrlInfor.ActivePageIndex;
end;
⑸ 当角色表中的记录添加和修改后,需要刷新CheckListBoxRole对象中的角色项,因此需要设计ADODataSetRole角色数据集的AfterPost事件,相关代码如下:
procedure TFormRightManage.ADODataSetRoleAfterPost(DataSet: TDataSet);
begin
DMServerDB.ADODataSetUserRole.Requery(); //刷新用户角色
DMServerDB.ADODataSetRoleRight.Requery(); //刷新角色权限
CheckListBoxRole_AddRole; // 刷新CheckListBoxRole对象中的角色项
ADODataSetUserAfterScroll( ADODataSet_User );
end;
⑹ 当用户表中的记录位置发生变化后,需要更新ADODataSetUserRole用户角色数据集为当前用户所具有的角色,并在CheckListBoxRole对象中设置该用户所拥有的角色,因此需要设计ADODataSetUserRole角色数据集的AfterScroll事件,相关代码如下:
procedure TFormRightManage.ADODataSetUserAfterScroll(DataSet: TDataSet);
var
iCount, iPos: Integer;
begin
with DMServerDB do begin // 当前用户所具有的角色
ADODataSetUserRole.Filter:='UserID='''+ADODataSet_User.FieldValues[strKeyField[0]]+'''';
ADODataSetUserRole.First;
// 清空角色
for iCount := 0 to CheckListBoxRole.Items.Count-1 do
CheckListBoxRole.Checked[iCount] := False;
// 设置当前用户所具有的角色
while Not ADODataSetUserRole.Eof do begin
for iCount := 0 to CheckListBoxRole.Items.Count-1 do begin
iPos := Pos(',', CheckListBoxRole.Items[iCount]);
if ADODataSetUserRole.FieldValues['RoleID']=Copy(CheckListBoxRole.Items[iCount],1,iPos-1) then
CheckListBoxRole.Checked[iCount] := True;
end;
ADODataSetUserRole.Next;
end;
end;
end;
⑺ 设计“保存”按钮代码,保存添加的角色、当前用户所拥有的角色和角色权限信息,相关代码如下:
procedure TFormRightManage.SBtnSaveClick(Sender: TObject);
var
iCount, iPos: Integer;
begin
case PageCtrlInfor.ActivePageIndex of
1: begin // 用户角色信息发生变化
with DMServerDB do begin
ADODataSetUserRole.First; // 清空当前用户的角色
while Not ADODataSetUserRole.Eof do
ADODataSetUserRole.Delete;
//添加当前用户的角色
for iCount := 0 to CheckListBoxRole.Items.Count-1 do begin
if CheckListBoxRole.Checked[iCount] then begin
ADODataSetUserRole.Append;
case CBoxUserType.ItemIndex of
0 :begin // 教师
|