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

📄 unitacl.pas

📁 ACL权限控制软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{ACL管理器单元}
unit UnitACL;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, StdCtrls, Buttons,XMLIntf,XMLDoc,xmldom,msxmldom,
  CheckLst, DB, DBClient, Provider, Xmlxform, Grids, DBGridEh, Menus,UnitActionList,
  DBCtrls,Activex,ModuleIntf, ACLIntf, DBGrids;  //需要引用到ActiveX单元
type
  TFrmACL = class(TForm)
    PanelMain: TPanel;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    BitBtn9: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn2: TBitBtn;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    S1: TMenuItem;
    PopupMenu2: TPopupMenu;
    A1: TMenuItem;
    D1: TMenuItem;
    Panel4: TPanel;
    TabSheet3: TTabSheet;
    BitBtn12: TBitBtn;
    BitBtn13: TBitBtn;
    PopupMenu3: TPopupMenu;
    N3: TMenuItem;
    N4: TMenuItem;
    Panel3: TPanel;
    GroupBox1: TGroupBox;
    DBGridEh1: TDBGridEh;
    Panel6: TPanel;
    GroupBox2: TGroupBox;
    DBGridEh2: TDBGridEh;
    Panel8: TPanel;
    GroupBox5: TGroupBox;
    DBGridEh5: TDBGridEh;
    BitBtn14: TBitBtn;
    BitBtn15: TBitBtn;
    Panel9: TPanel;
    GroupBox3: TGroupBox;
    DBGridEh4: TDBGridEh;
    BitBtn16: TBitBtn;
    BitBtn17: TBitBtn;
    BitBtn18: TBitBtn;
    BitBtn19: TBitBtn;
    BitBtn20: TBitBtn;
    BitBtn21: TBitBtn;
    M1: TMenuItem;
    F1: TMenuItem;
    M2: TMenuItem;
    F2: TMenuItem;
    M3: TMenuItem;
    F3: TMenuItem;
    PopupMenu4: TPopupMenu;
    S2: TMenuItem;
    PopupMenu5: TPopupMenu;
    S3: TMenuItem;
    BitBtn22: TBitBtn;
    Panel7: TPanel;
    GroupBox4: TGroupBox;
    DBGridEh3: TDBGridEh;
    BitBtn1: TBitBtn;
    BitBtn3: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure P1Click(Sender: TObject);
    procedure S1Click(Sender: TObject);
    procedure A1Click(Sender: TObject);
    procedure D1Click(Sender: TObject);
    procedure P2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBGridEh1CellClick(Column: TColumnEh);
    procedure BitBtn14Click(Sender: TObject);
    procedure BitBtn15Click(Sender: TObject);
    procedure BitBtn16Click(Sender: TObject);
    procedure BitBtn17Click(Sender: TObject);
    procedure BitBtn18Click(Sender: TObject);
    procedure BitBtn19Click(Sender: TObject);
    procedure BitBtn20Click(Sender: TObject);
    procedure BitBtn21Click(Sender: TObject);
    procedure DBGridEh2CellClick(Column: TColumnEh);
    procedure AfterDataSetChanged;
  private
      FIMsgAreaIntf : IMessageAreaIntf;

      procedure processScroll(Sender : TObject);
    { Private declartions }
  public
     property MsgAreaIntf : IMessageAreaIntf read FIMsgAreaIntf write FIMsgAreaIntf;
    { Public declarations }
  end;

var
  FrmACL: TFrmACL;

implementation
  uses UnitDataM;
{$R *.dfm}


procedure TFrmACL.BitBtn1Click(Sender: TObject);
begin
  {with TfrmSel.CreateNew(self, [Dbgrideh1.SelectedField.text]) do
  begin
     ShowModal;
     free;
  end;  }
end;
procedure TFrmACL.BitBtn4Click(Sender: TObject);
begin
   close;
end;

procedure TFrmACL.BitBtn3Click(Sender: TObject);
begin
   close;
end;

procedure TFrmACL.BitBtn5Click(Sender: TObject);
begin      //增加角色
   {Application.CreateForm(TFrmAddRole,FrmAddRole);
   FrmAddRole.ShowModal;
   FrmAddRole.Free;   }
end;

procedure TFrmACL.BitBtn6Click(Sender: TObject);
var         //删除角色
  rolelist:IXMLDocument;
  rolelistnode,subnode:IXMLNode;
  Delid:string;
  i,count:integer;
begin
  {if MessageBox(Self.Handle,'您确定要删除该角色吗?','ACL管理器',MB_OKCANCEL) = 2 then
    exit;
  rolelist := TXMLDocument.Create(DataM.Filename + '\rolelist.xml');
  rolelist.Active := true;
  Delid := DBGridEh1.SelectedField.Text;
  rolelistnode := rolelist.DocumentElement;
  i := 0;
  count := rolelistnode.ChildNodes.Count;

  while i<count do
   begin
     subnode := rolelistnode.ChildNodes.Nodes[i];
     if subnode.Attributes['id'] = Delid then
          break;
          Inc(i);
   end;
  rolelistnode.ChildNodes.Delete(i);

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

  DataM.RoleListDataSet.Active := false;
  DataM.RoleListDataSet.Active := true;    }
end;

procedure TFrmACL.BitBtn2Click(Sender: TObject);
begin          //该角色对应的用户
   { with TFrmRole_User.CreateNew(self, [Dbgrideh1.SelectedField.text]) do
    begin
       ShowModal;
       free;
    end; }
end;

procedure TFrmACL.BitBtn7Click(Sender: TObject);
begin            //该用户对应的角色
  {with TFrmRoleAccess.CreateNew(self, [Dbgrideh2.SelectedField.text]) do
  begin
     ShowModal;
     free;
  end;}
end;

procedure TFrmACL.BitBtn8Click(Sender: TObject);
begin            //增加用户
   {Application.CreateForm(TFrmAddUser,FrmAddUser);
   FrmAddUser.ShowModal;
   FrmAddUser.Free;}
end;

procedure TFrmACL.BitBtn9Click(Sender: TObject);
var             //删除该用户
  userlist:IXMLDocument;
  userlistnode,subnode:IXMLNode;
  Delid:string;
  i,count:integer;
begin
  {if MessageBox(Self.Handle,'您确定要删除该用户吗?','ACL管理器',MB_OKCANCEL) = 2 then
    exit;
  userlist := TXMLDocument.Create(DataM.Filename + '\userlist.xml');
  userlist.Active := true;
  Delid := DBGridEh2.SelectedField.Text;
  userlistnode := userlist.DocumentElement;
  i := 0;
  count := userlistnode.ChildNodes.Count;

  while i<count do
   begin
     subnode := userlistnode.ChildNodes.Nodes[i];

     if subnode.ChildNodes.FindNode('ID').Text =  Delid then
          break;
     Inc(i);
   end;
  userlistnode.ChildNodes.Delete(i);

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

  DataM.UserListDataSet.Active := false;
  DataM.UserListDataSet.Active := true;  }
end;


procedure TFrmACL.N1Click(Sender: TObject);
begin                 //增加用户
   {Application.CreateForm(TFrmAddUser,FrmAddUser);
   FrmAddUser.ShowModal;
   FrmAddUser.Free; }
end;

procedure TFrmACL.N2Click(Sender: TObject);
var                  //删除角色
  rolelist:IXMLDocument;
  rolelistnode,subnode:IXMLNode;
  Delid:string;
  i,count:integer;
begin
  {if MessageBox(Self.Handle,'您确定要删除该角色吗?','ACL管理器',MB_OKCANCEL) = 2 then
    exit;
  rolelist := TXMLDocument.Create(DataM.Filename + '\rolelist.xml');
  rolelist.Active := true;
  Delid := DBGridEh1.SelectedField.Text;
  rolelistnode := rolelist.DocumentElement;
  i := 0;
  count := rolelistnode.ChildNodes.Count;

  while i<count do
   begin
     subnode := rolelistnode.ChildNodes.Nodes[i];
     if subnode.Attributes['id'] = Delid then
          break;
          Inc(i);
   end;
  rolelistnode.ChildNodes.Delete(i);

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

 DataM.RoleListDataSet.Active := false;
 DataM.RoleListDataSet.Active := true; }
end;

procedure TFrmACL.P1Click(Sender: TObject);
begin
 { with TfrmSel.CreateNew(self, [Dbgrideh1.SelectedField.text ,DataM.Filename]) do
  begin
     ShowModal;
     free;
  end;  }
end;

procedure TFrmACL.S1Click(Sender: TObject);
begin    //该用户对应的角色
   {with TFrmRole_User.CreateNew(self, [Dbgrideh1.SelectedField.text,DataM.Filename]) do
    begin
       ShowModal;
       free;
    end; }
end;

procedure TFrmACL.A1Click(Sender: TObject);
begin                //增加
  { Application.CreateForm(TFrmAddUser,FrmAddUser);
   FrmAddUser.ShowModal;
   FrmAddUser.Free; }
end;

procedure TFrmACL.D1Click(Sender: TObject);
var             //删除该用户
  userlist:IXMLDocument;
  userlistnode,subnode:IXMLNode;
  Delid:string;
  i,count:integer;
begin
  {if MessageBox(Self.Handle,'您确定要删除该用户吗?','ACL管理器',MB_OKCANCEL) = 2 then
    exit;
  userlist := TXMLDocument.Create(DataM.Filename + '\userlist.xml');
  userlist.Active := true;
  Delid := DBGridEh2.SelectedField.Text;
  userlistnode := userlist.DocumentElement;
  i := 0;
  count := userlistnode.ChildNodes.Count;

  while i<count do
   begin
     subnode := userlistnode.ChildNodes.Nodes[i];

     if subnode.ChildNodes.FindNode('ID').Text =  Delid then
          break;
     Inc(i);
   end;
  userlistnode.ChildNodes.Delete(i);

  userlist.SaveToFile(DataM.Filename + '\userlist.xml');
  userlist.Active := false;
  DataM.UserListDataSet.Active := false;
  DataM.UserListDataSet.Active := true;}
end;

procedure TFrmACL.P2Click(Sender: TObject);
begin
  {with TFrmRoleAccess.CreateNew(self, [Dbgrideh2.SelectedField.text ,DataM.Filename]) do
  begin
     ShowModal;
     free;
  end; }
end;

procedure TFrmACL.FormCreate(Sender: TObject);
begin

    DBGridEh1.DataSource := DataM.RoleListDataSource;
    DBGridEh1.DataSource.DataSet.Active := true;
    DBGridEh2.DataSource := DataM.UserListDataSource;
    DBGridEh2.DataSource.DataSet.Active := true;
    DBGridEh4.DataSource := DataM.PermissionMDataSource;
    DBGridEh4.DataSource.DataSet.Active := true;
    DBGridEh3.DataSource := DataM.PermissionListDataSource;
    DBGridEh3.DataSource.DataSet.Active := true;
    DBGridEh3.DataSource.DataSet.Fields.Fields[0].ReadOnly := true;
    DBGridEh3.DataSource.DataSet.Fields.Fields[3].ReadOnly := true;
    DBGridEh5.DataSource := DataM.RoleAccessDataSource;
    DBGridEh5.DataSource.DataSet.Active := true;
    DBGridEh5.DataSource.DataSet.Fields.Fields[0].ReadOnly := true;
    DBGridEh5.DataSource.DataSet.Fields.Fields[1].ReadOnly := true;

    DBGridEh1.AutoFitColWidths := true;
    DBGridEh2.AutoFitColWidths := true;
    DBGridEh3.AutoFitColWidths := true;
    DBGridEh4.AutoFitColWidths := true;
    DBGridEh5.AutoFitColWidths := true;

    DataM.OnDataSetScroll := processScroll;
    DataM.RoleListDataSet.First;
    DataM.UserListDataSet.First;

//*******************给表格添加列名******************************************//
    AfterDataSetChanged;
   {  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;



procedure TFrmACL.DBGridEh1CellClick(Column: TColumnEh);
var
  rolelist,permissionlist:IXMLDocument;
  rolelistnode,permissionlistnode:IXMLNode;
  subnode,grandnode,subnode1 : IXMLNode;
  i,count: integer;
begin
  if DataM.RoleListDataSet.Eof then exit;
//////////////将选中角色的权限赋给权限列表/////////////////////////////////////
  DataM.PermissionListDataSet.Active := true;

//  rolelist := TXMLDocument.Create(DataM.Filename + '\rolelist.xml');
  rolelist := TXMLDocument.Create(nil);
  rolelist.LoadFromFile(DataM.Filename + '\rolelist.xml');
  rolelist.Active := true;
  rolelist.Options := rolelist.Options + [doNodeAutoIndent];
  rolelist.NodeIndentStr := '  ';
  rolelist.Version := '1.0';
  rolelistnode := rolelist.DocumentElement;
  i := 0;

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

⌨️ 快捷键说明

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