📄 rc_dbassignmanage.pas
字号:
unit RC_DBAssignManage;
{
代码单元名称:通用权限分配工具数据库权限分配窗口
从属软件:大连资金清算中心打码机管理信息系统
开发单位:大连理工大学计算机技术研究所软件工程研究室
作者:王树润
时间:2001,1,30
}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DBCtrls, ComCtrls, ToolWin, ImgList, Grids, DBGrids, StdCtrls,
Mask, db, dbTables, ADOdb, Menus, Buttons, Variants;
type
TRC_DfmDBAssignManage = class(TForm)
DBGrid1: TDBGrid;
GroupBox2: TGroupBox;
Label1: TLabel;
Label4: TLabel;
GroupBox1: TGroupBox;
TreeView1: TTreeView;
PopupMenu1: TPopupMenu;
Browse: TMenuItem;
Edit: TMenuItem;
Add: TMenuItem;
Delete: TMenuItem;
ImageList1: TImageList;
UserOrUserGroupName: TEdit;
UserOrUserGroupIdentify: TEdit;
RecordRight: TMenuItem;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
CloseToolButton: TToolButton;
ConfirmToolButton: TToolButton;
ToolButton3: TToolButton;
DeleteRight: TMenuItem;
DBNavigator1: TDBNavigator;
procedure FormShow(Sender: TObject);
procedure BrowseClick(Sender: TObject);
procedure EditClick(Sender: TObject);
procedure AddClick(Sender: TObject);
procedure DeleteClick(Sender: TObject);
procedure CloseToolButtonClick(Sender: TObject);
procedure ConfirmToolButtonClick(Sender: TObject);
procedure DeleteRightClick(Sender: TObject);
procedure RecordRightClick(Sender: TObject);
procedure TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
private
function OpenDBAssignQuery: Boolean;
function OpenDTableNameQuery: Boolean;
{ Private declarations }
public
{ Public declarations }
UserOrUserGroupDBGrid: TDBGrid;
constructor Create(Owner: Tcomponent; AUserOrUserGroupDBGrid: TDBGrid);
overload;
end;
implementation
uses RC_DataModule1, RC_DBRecorRightManage;
var
DBSourceIdentify: array[0..1000] of string;
{$R *.DFM}
//构造函数======================================================================
constructor TRC_DfmDBAssignManage.Create(Owner: Tcomponent;
AUserOrUserGroupDBGrid: TDBGrid);
begin
inherited create(Owner);
UserOrUserGroupDBGrid := AUserOrUserGroupDBGrid; //修改
end;
//窗体==========================================================================
procedure TRC_DfmDBAssignManage.FormShow(Sender: TObject);
var
i: integer;
PresentDatabaseNode: TTreeNode;
PresentTableNode: TTreeNode;
PresentFieldNode: TTreeNode;
begin
OpenDBAssignQuery;
OpenDTableNameQuery;
DBNavigator1.DataSource := RC_DfmDataModule1.DBAssignDataSource;
DBGrid1.DataSource := RC_DfmDataModule1.DBAssignDataSource;
RC_DfmDataModule1.DDBAssignQuery.First;
//汉化字段名--------------------------------------------------------------------
while not RC_DfmDataModule1.DDBAssignQuery.Eof do
begin
RC_DfmDataModule1.DBAssignQuery.FieldByName(Trim(RC_DfmDataModule1.DDBAssignQuery.FieldByName('FieldNameE').AsString)).DisplayLabel :=
RC_DfmDataModule1.DDBAssignQuery.FieldByName('FieldNameC').AsString;
RC_DfmDataModule1.DDBAssignQuery.Next;
end;
//确认使用者--------------------------------------------------------------------
UserOrUserGroupName.Text := UserOrUserGroupDBGrid.Fields[0].AsString;
if Trim(UserOrUserGroupDBGrid.Fields[0].DisplayLabel) = '用户名称' then
UserOrUserGroupIdentify.Text := '用户'
else
UserOrUserGroupIdentify.Text := '用户组';
//生成字段数--------------------------------------------------------------------
i := 0;
PresentDatabaseNode := TreeView1.Items.Add(nil, 'dmj');
PresentDatabaseNode.ImageIndex := 4;
PresentDatabaseNode.SelectedIndex := 4;
DBSourceIdentify[i] := 'Database';
i := i + 1;
RC_DfmDataModule1.DTableNameQuery.First;
while not RC_DfmDataModule1.DTableNameQuery.Eof do
begin
PresentTableNode := TreeView1.Items.AddChild(PresentDatabaseNode,
Trim(RC_DfmDataModule1.DTableNameQuery.FieldByName('FieldNameE').AsString));
PresentTableNode.ImageIndex := 0;
PresentTableNode.SelectedIndex := 0;
DBSourceIdentify[i] := 'Table';
i := i + 1;
with RC_DfmDataModule1.DTableFieldQuery do
begin
if RC_DfmDataModule1.DTableFieldQuery.Active then
Close;
Sql.Clear;
Sql.Add('Select * From ' + 'D' +
Trim(RC_DfmDataModule1.DTableNameQuery.FieldByName('FieldNameE').AsString));
try
Open;
except
Exit;
end;
end;
RC_DfmDataModule1.DTableFieldQuery.First;
while not RC_DfmDataModule1.DTableFieldQuery.Eof do
begin
PresentFieldNode := TreeView1.Items.AddChild(PresentTableNode, '' +
PresentTableNode.Text + '_' +
RC_DfmDataModule1.DTableFieldQuery.FieldByName('FieldNameE').AsString +
'');
PresentFieldNode.ImageIndex := 2;
PresentFieldNode.SelectedIndex := 2;
DBSourceIdentify[i] := 'Field';
if RC_DfmDataModule1.DBAssignQuery.Locate('UOrUGIden;UOrUGName;DBResName',
VarArrayOf([Trim(UserOrUserGroupIdentify.Text),
Trim(UserOrUserGroupName.Text), Trim(PresentFieldNode.Text)]), []) then
PresentFieldNode.Text := PresentFieldNode.Text + '(' +
Trim(RC_DfmDataModule1.DBAssignQuery.FieldByName('DBRighName').AsString)
+ ')';
i := i + 1;
RC_DfmDataModule1.DTableFieldQuery.Next;
end;
PresentFieldNode := TreeView1.Items.AddChild(PresentTableNode,
PresentTableNode.Text + '_' + '记录权');
PresentFieldNode.ImageIndex := 2;
PresentFieldNode.SelectedIndex := 2;
DBSourceIdentify[i] := 'Record';
if RC_DfmDataModule1.DBAssignQuery.Locate('UOrUGIden;UOrUGName;DBResName',
VarArrayOf([Trim(UserOrUserGroupIdentify.Text),
Trim(UserOrUserGroupName.Text), Trim(PresentFieldNode.Text)]), []) then
PresentFieldNode.Text := PresentFieldNode.Text + '(' +
Trim(RC_DfmDataModule1.DBAssignQuery.FieldByName('DBRighName').AsString)
+
')';
i := i + 1;
if RC_DfmDataModule1.DBAssignQuery.Locate('UOrUGIden;UOrUGName;DBResName',
VarArrayOf([Trim(UserOrUserGroupIdentify.Text),
Trim(UserOrUserGroupName.Text), Trim(PresentTableNode.Text)]), []) then
PresentTableNode.Text := PresentTableNode.Text + '(' +
Trim(RC_DfmDataModule1.DBAssignQuery.FieldByName('DBRighName').AsString)
+
')';
RC_DfmDataModule1.DTableNameQuery.Next;
end;
TreeView1.FullExpand;
end;
//按钮--------------------------------------------------------------------------
procedure TRC_DfmDBAssignManage.CloseToolButtonClick(Sender: TObject);
begin
Close;
end;
//向字段数中填权限--------------------------------------------------------------
procedure TRC_DfmDBAssignManage.DeleteRightClick(Sender: TObject);
begin
if pos('(', TreeView1.Selected.Text) <> 0 then
TreeView1.Selected.Text := copy(TreeView1.Selected.Text, 1, pos('(',
TreeView1.Selected.Text) - 1);
end;
procedure TRC_DfmDBAssignManage.RecordRightClick(Sender: TObject);
var
DfmDBRecordRightManage: TRC_DfmDBRecordRightManage;
begin
if pos('记录权', TreeView1.Selected.Text) = 0 then
Exit;
DfmDBRecordRightManage := TRC_DfmDBRecordRightManage.Create(Self, TreeView1);
DfmDBRecordRightManage.ShowModal;
DfmDBRecordRightManage.Free;
end;
procedure TRC_DfmDBAssignManage.BrowseClick(Sender: TObject);
var
ModifyRightName: string;
i: integer;
begin
if pos('(', TreeView1.Selected.Text) <> 0 then
ModifyRightName := copy(TreeView1.Selected.Text, 1, pos('(',
TreeView1.Selected.Text) - 1)
else
ModifyRightName := TreeView1.Selected.Text;
if Pos('浏览', TreeView1.Selected.Text) <> 0 then
Exit;
if TreeView1.Selected.Level = 1 then
begin
for i := 0 to TreeView1.Items.Count - 1 do
begin
if ((pos(ModifyRightName, TreeView1.Items[i].Text) <> 0) and
(Pos('浏览', TreeView1.Items[i].Text) = 0) and
(pos('记录权', TreeView1.Items[i].Text) = 0)) then
begin
if Pos('(', TreeView1.Items[i].Text) = 0 then
TreeView1.Items[i].Text := TreeView1.Items[i].Text + '(' + '浏览' + ')'
else
TreeView1.Items[i].Text := Copy(TreeView1.Items[i].Text, 1,
Length(TreeView1.Items[i].Text) - 1) + ',浏览)';
end;
end;
end
else
begin
if Pos('(', TreeView1.Selected.Text) = 0 then
TreeView1.Selected.Text := TreeView1.Selected.Text + '(' + '浏览' + ')'
else
TreeView1.Selected.Text := Copy(TreeView1.Selected.Text, 1,
Length(TreeView1.Selected.Text) - 1) + ',浏览)';
end;
end;
procedure TRC_DfmDBAssignManage.EditClick(Sender: TObject);
var
ModifyRightName: string;
i: integer;
begin
if pos('(', TreeView1.Selected.Text) <> 0 then
ModifyRightName := copy(TreeView1.Selected.Text, 1, pos('(',
TreeView1.Selected.Text) - 1)
else
ModifyRightName := TreeView1.Selected.Text;
if Pos('修改', TreeView1.Selected.Text) <> 0 then
Exit;
if TreeView1.Selected.Level = 1 then
begin
for i := 0 to TreeView1.Items.Count - 1 do
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -