📄 unitacl.pas
字号:
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 + -