⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitacl.~pas

📁 ACL权限控制软件
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
  end;

 i := 0;
 count := subnode.ChildNodes.Count;   //权限数

// permissionlist := TXMLDocument.Create(DataM.Filename + '\permissionlist.xml');
 permissionlist := TXMLDocument.Create(nil);
 permissionlist.LoadFromFile(DataM.Filename + '\permissionlist.xml');
 permissionlist.Active := true;
 permissionlist.Options := permissionlist.Options + [doNodeAutoIndent];
 permissionlist.NodeIndentStr := '  ';
 permissionlistnode := permissionlist.DocumentElement;

 while (i< count) do
  begin
   grandnode := subnode.ChildNodes.Nodes[i];
   subnode1 := permissionlistnode.ChildNodes.Nodes[i];
   subnode1.ChildNodes.FindNode('read').Text := grandnode.ChildNodes.FindNode('read').Text;
   subnode1.ChildNodes.FindNode('write').Text := grandnode.ChildNodes.FindNode('write').Text;
   Inc(i);
  end;
 rolelist.SaveToFile(DataM.Filename + '\rolelist.xml');
 permissionlist.SaveToFile(DataM.Filename + '\permissionlist.xml');
 rolelist.Active := false;
 permissionlist.Active := false;

 DataM.PermissionListDataSet.Active := false;
 DataM.PermissionListDataSet.Active := true;
////////////////////////////////////////////////////////////////////////////////

///////////////初始化窗口显示内容///////////////////////////////////////////////

  DBGridEh3.AutoFitColWidths := true;

////////////////////////////////////////////////////////////////////////////////

end;

procedure TFrmACL.BitBtn14Click(Sender: TObject);
var
  rolelist:IXMLDocument;
  rolelistnode:IXMLNode;
  subnode,grandnode:IXMLNode;
  i,count: integer;

begin
/////////////////////将用户对权限表的修改保存到角色表中////////////////////////

 { rolelist := TXMLDocument.Create(DataM.Filename + '\rolelist.xml');
  rolelist.Active := true;
  rolelist.Options := rolelist.Options + [doNodeAutoIndent];
  rolelist.NodeIndentStr := '  ';
  rolelistnode := rolelist.DocumentElement;
  subnode := rolelistnode.ChildNodes.First;

  i := 0;
 while(i < rolelistnode.ChildNodes.Count ) do
  begin
   if  subnode.Attributes['id'] = Dbgrideh1.selectedfield.text  then
     break;
   Inc(i);
   subnode := rolelistnode.ChildNodes.Nodes[i];
  end;

 i := 0;
 count := subnode.ChildNodes.Count;   //权限数

 DBGridEh3.DataSource.DataSet.First;
 while (i< count) do
  begin
   grandnode := subnode.ChildNodes.Nodes[i];
   grandnode.ChildNodes.FindNode('read').Text := DBGridEh3.DataSource.DataSet.Fields.Fields[1].Value ;
   grandnode.ChildNodes.FindNode('write').Text := DBGridEh3.DataSource.DataSet.Fields.Fields[2].Value ;
   Inc(i);
   DBGridEh3.DataSource.DataSet.next;
  end;
  rolelist.SaveToFile(DataM.Filename + '\rolelist.xml');
///////////////////////////////////////////////////////////////////////////////

  close;     }
end;

procedure TFrmACL.BitBtn15Click(Sender: TObject);
var                         //保存修改
  roleaccess,userlist:IXMLDocument;
  roleaccessnode,userlistnode:IXMLNode;
  subnode,grandnode : IXMLNode;
  i,count: integer;
begin
 { DBGridEh5.AutoFitColWidths := true;
  userlist := TXMLDocument.Create(DataM.Filename + '\userlist.xml');
  userlist.Active := true;
  userlist.Options := userlist.Options + [doNodeAutoIndent];
  userlist.NodeIndentStr := '  ';
  userlistnode := userlist.DocumentElement;
  i := 0;

  while(i < userlistnode.ChildNodes.Count ) do
   begin
     subnode := userlistnode.ChildNodes.Nodes[i];
     if  subnode.ChildNodes.FindNode('ID').Text = Dbgrideh2.selectedfield.text  then
       break;
     Inc(i);
   end;
 roleaccess := TXMLDocument.Create(DataM.Filename + '\roleaccess.xml');
 roleaccess.Active := true;
 roleaccessnode := roleaccess.DocumentElement;
 i := 0;
 count := roleaccessnode.ChildNodes.Count;

 DBGridEh5.DataSource.DataSet.First;
 while (i< count) do
   begin
    grandnode := subnode.ChildNodes.Nodes[i+3];
    grandnode.Attributes['access'] := DBGridEh5.DataSource.DataSet.Fields.Fields[2].Value;
    Inc(i);
    DBGridEh5.DataSource.DataSet.next;
   end;

 roleaccess.SaveToFile(DataM.Filename + '\roleaccess.xml');
 userlist.SaveToFile(DataM.Filename + '\userlist.xml');
 userlist.Active := false;
 roleaccess.Active := false;

 close;    }


end;



procedure TFrmACL.BitBtn16Click(Sender: TObject);
begin
   { DBGridEh1.Options := DBGridEh1.Options - [dgRowSelect]+ [dgEditing];  }
end;

procedure TFrmACL.BitBtn17Click(Sender: TObject);
var
  rolelist,userlist,roleaccess:IXMLDocument;
  rolelistnode,subnode,userlistnode,grandnode,roleaccessnode:IXMLNode;
  i,j:integer;
begin
////////////////////////修改rolelist表的内容///////////////////////////////////
   { rolelist := TXMLDocument.Create(DataM.Filename + '\rolelist.xml');
    rolelist.Active := true;
    rolelist.Options := rolelist.Options + [doNodeAutoIndent];
    rolelist.NodeIndentStr := '  ';
    rolelistnode := rolelist.DocumentElement;
    i := 0;

    DBGridEh1.DataSource.DataSet.First;
    while i<rolelistnode.ChildNodes.Count do
      begin
          subnode := rolelistnode.ChildNodes.Nodes[i];
          subnode.SetAttribute('id',DBGridEh1.DataSource.DataSet.Fields.Fields[0].value);
          subnode.SetAttribute('chn',DBGridEh1.DataSource.DataSet.Fields.Fields[1].value);
          Inc(i);
          DBGridEh1.DataSource.DataSet.next;
      end;

    rolelist.SaveToFile(DataM.Filename + '\rolelist.xml');
    rolelist.Active := false;
///////////////////////////////////////////////////////////////////////////////

///////////////////////修改userlist表的内容/////////////////////////////////////
    userlist := TXMLDocument.Create(DataM.Filename + '\userlist.xml');
    userlist.Active := true;
    userlist.Options := userlist.Options + [doNodeAutoIndent];
    userlist.NodeIndentStr := '  ';
    userlistnode := userlist.DocumentElement;
    i := 0;

    while i<userlistnode.ChildNodes.Count do
      begin
          DBGridEh1.DataSource.DataSet.First;
          subnode := userlistnode.ChildNodes.Nodes[i];
          j := 3;
          while j<subnode.ChildNodes.Count do
            begin
                grandnode := subnode.ChildNodes.Nodes[j];
                grandnode.SetAttribute('id',DBGridEh1.DataSource.DataSet.Fields.Fields[0].value);
                grandnode.SetAttribute('chn',DBGridEh1.DataSource.DataSet.Fields.Fields[1].value);
                Inc(j);
                DBGridEh1.DataSource.DataSet.next;
            end;
          Inc(i);
      end;

      userlist.SaveToFile(DataM.Filename + '\userlist.xml');
      userlist.Active := false;
///////////////////////////////////////////////////////////////////////////////

///////////////////////修改roleaccess表的内容/////////////////////////////////////
    roleaccess := TXMLDocument.Create(DataM.Filename + '\roleaccess.xml');
    roleaccess.Active := true;
    roleaccess.Options := roleaccess.Options + [doNodeAutoIndent];
    roleaccess.NodeIndentStr := '  ';
    roleaccessnode := roleaccess.DocumentElement;
    i := 0;

    DBGridEh1.DataSource.DataSet.First;
    while i<roleaccessnode.ChildNodes.Count do
      begin
          subnode := roleaccessnode.ChildNodes.Nodes[i];
          subnode.SetAttribute('id',DBGridEh1.DataSource.DataSet.Fields.Fields[0].value);
          subnode.SetAttribute('chn',DBGridEh1.DataSource.DataSet.Fields.Fields[1].value);
          Inc(i);
          DBGridEh1.DataSource.DataSet.next;
      end;

      roleaccess.SaveToFile(DataM.Filename + '\roleaccess.xml');
      roleaccess.Active := false;
      DBGridEh5.DataSource.DataSet.Active := false;
      DBGridEh5.DataSource.DataSet.Active := true;

///////////////////////////////////////////////////////////////////////////////

   DBGridEh1.Options := DBGridEh1.Options + [dgRowSelect];    }
end;

procedure TFrmACL.BitBtn18Click(Sender: TObject);
begin
   { DBGridEh2.Options := DBGridEh2.Options - [dgRowSelect]+ [dgEditing]; }
end;

procedure TFrmACL.BitBtn19Click(Sender: TObject);
var
  userlist:IXMLDocument;
  userlistnode,subnode:IXMLNode;
  i:integer;
begin
////////////////////////修改userlist表的内容///////////////////////////////////
   { userlist := TXMLDocument.Create(DataM.Filename + '\userlist.xml');
    userlist.Active := true;
    userlist.Options := userlist.Options + [doNodeAutoIndent];
    userlist.NodeIndentStr := '  ';
    userlistnode := userlist.DocumentElement;
    i := 0;

    DBGridEh2.DataSource.DataSet.First;
    while i<userlistnode.ChildNodes.Count do
      begin
          subnode := userlistnode.ChildNodes.Nodes[i];
          subnode.ChildNodes.FindNode('ID').Text := DBGridEh2.DataSource.DataSet.Fields.Fields[0].value;
          subnode.ChildNodes.FindNode('name').Text := DBGridEh2.DataSource.DataSet.Fields.Fields[1].value;
          DBGridEh2.DataSource.DataSet.next;
          Inc(i);
      end;

    userlist.SaveToFile(DataM.Filename + '\userlist.xml');
    userlist.Active := false;
///////////////////////////////////////////////////////////////////////////////


   DBGridEh2.Options := DBGridEh2.Options + [dgRowSelect]; }
end;

procedure TFrmACL.BitBtn20Click(Sender: TObject);
begin
    {DBGridEh4.Options := DBGridEh4.Options - [dgRowSelect]+ [dgEditing]; }
end;

procedure TFrmACL.BitBtn21Click(Sender: TObject);
var
  permissionlist,rolelist:IXMLDocument;
  permissionlistnode,subnode,rolelistnode,grandnode:IXMLNode;
  i,j:integer;
begin
////////////////////////修改permissionlist表的内容///////////////////////////////////
  {  permissionlist := TXMLDocument.Create(DataM.Filename + '\permissionlist.xml');
    permissionlist.Active := true;
    permissionlist.Options := permissionlist.Options + [doNodeAutoIndent];
    permissionlist.NodeIndentStr := '  ';
    permissionlistnode := permissionlist.DocumentElement;
    i := 0;

    DBGridEh4.DataSource.DataSet.First;
    while i<permissionlistnode.ChildNodes.Count do
      begin
          subnode := permissionlistnode.ChildNodes.Nodes[i];
          subnode.ChildNodes.FindNode('code').Text := DBGridEh4.DataSource.DataSet.Fields.Fields[0].value;
          subnode.ChildNodes.FindNode('中文描述').Text := DBGridEh4.DataSource.DataSet.Fields.Fields[1].value;
          DBGridEh4.DataSource.DataSet.next;
          Inc(i);
      end;

    permissionlist.SaveToFile(DataM.Filename + '\permissionlist.xml');
    permissionlist.Active := false;
///////////////////////////////////////////////////////////////////////////////

////////////////////////修改rolelist表的内容///////////////////////////////////
    rolelist := TXMLDocument.Create(DataM.Filename + '\rolelist.xml');
    rolelist.Active := true;
    rolelist.Options := rolelist.Options + [doNodeAutoIndent];
    rolelist.NodeIndentStr := '  ';
    rolelistnode := rolelist.DocumentElement;
    i := 0;

    while i<rolelistnode.ChildNodes.Count do
      begin
          subnode := rolelistnode.ChildNodes.Nodes[i];
          j := 0;
          DBGridEh4.DataSource.DataSet.First;
          while j<subnode.ChildNodes.Count do
            begin
                grandnode := subnode.ChildNodes.Nodes[j];
                grandnode.ChildNodes.FindNode('code').Text := DBGridEh4.DataSource.DataSet.Fields.Fields[0].value;
                grandnode.ChildNodes.FindNode('中文描述').Text := DBGridEh4.DataSource.DataSet.Fields.Fields[1].value;
                DBGridEh4.DataSource.DataSet.next;
                Inc(j);
            end;
          Inc(i);
      end;

    rolelist.SaveToFile(DataM.Filename + '\rolelist.xml');
    rolelist.Active := false;
    DBGridEh3.DataSource.DataSet.Active := false;
    DBGridEh3.DataSource.DataSet.Active := true;
///////////////////////////////////////////////////////////////////////////////

   DBGridEh4.Options := DBGridEh4.Options + [dgRowSelect]; }

end;

procedure TFrmACL.processScroll(Sender: TObject);
begin            //  处理网格内的鼠标滚动事件
  if (Sender as TClientDataSet).Name = 'RoleListDataSet' then
    DBGridEh1CellClick(nil)
  else if (Sender as TClientDataSet).Name = 'UserListDataSet' then
    DBGridEh2CellClick(nil);
  AfterDataSetChanged;
end;

procedure TFrmACL.DBGridEh2CellClick(Column: TColumnEh);
var
  roleaccess,userlist:IXMLDocument;
  roleaccessnode,userlistnode:IXMLNode;
  subnode,grandnode : IXMLNode;
  i,count: integer;
begin
  if DataM.UserListDataSet.Eof then exit;
  DataM.RoleAccessDataSet.Active := true;

  DBGridEh5.AutoFitColWidths := true;
  userlist := TXMLDocument.Create(nil);
  userlist.LoadFromFile(DataM.Filename + '\userlist.xml');
  userlist.Active := true;
  userlistnode := userlist.DocumentElement;
  i := 0;

  while(i < userlistnode.ChildNodes.Count ) do
   begin
   subnode := userlistnode.ChildNodes.Nodes[i];
   if  subnode.ChildNodes.FindNode('ID').Text = Dbgrideh2.SelectedField.text  then
     break;
   Inc(i);
   end;

 roleaccess := TXMLDocument.Create(nil);
 roleaccess.LoadFromFile(DataM.Filename + '\roleaccess.xml');
 roleaccess.Active := true;
 roleaccess.Options := roleaccess.Options + [doNodeAutoIndent];
 roleaccess.NodeIndentStr := '  ';
 roleaccessnode := roleaccess.DocumentElement;
 i := 0;
 count := roleaccessnode.ChildNodes.Count;

 while (i< count) do
 begin

  grandnode := subnode.ChildNodes.Nodes[i+3];
  roleaccessnode.ChildNodes.Nodes[i].Attributes['access'] :=  grandnode.Attributes['access'];
  Inc(i);
 end;

 roleaccess.SaveToFile(DataM.Filename + '\roleaccess.xml');
 userlist.Active := false;
 roleaccess.Active := false;

 DataM.RoleAccessDataSet.Active := false;
 DataM.RoleAccessDataSet.Active := true;

end;

procedure TFrmACL.AfterDataSetChanged;
begin
   DBGridEh1.Columns[0].Title.Caption := '角色ID';
   DBGridEh1.Columns[1].Title.Caption := '中文名称';
   DBGridEh3.Columns[0].Title.Caption := '权限代码';
   DBGridEh3.Columns[1].Title.Caption := '可读';
   DBGridEh3.Columns[2].Title.Caption := '可写';
   DBGridEh3.Columns[3].Title.Caption := '中文描述';
   DBGridEh2.Columns[0].Title.Caption := '用户ID';
   DBGridEh2.Columns[1].Title.Caption := '中文名称';
   DBGridEh5.Columns[0].Title.Caption := '角色ID';
   DBGridEh5.Columns[1].Title.Caption := '中文名称';
   DBGridEh5.Columns[2].Title.Caption := '是否拥有该角色';
   DBGridEh4.Columns[0].Title.Caption := '权限ID';
   DBGridEh4.Columns[1].Title.Caption := '中文描述';

end;

initialization
   CoInitialize(nil);


finalization
   CoUninitialize;



end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -