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

📄 rc_dbassignmanage.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -