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

📄 rc_powerassignmanage.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
字号:
unit RC_PowerAssignManage;

{
代码单元名称:通用权限分配工具功能资源权限分配窗口
从属软件:大连资金清算中心打码机管理信息系统
开发单位:大连理工大学计算机技术研究所软件工程研究室
作者:王树润
时间:2001,1,30
}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask, DBCtrls, ExtCtrls, ComCtrls, ToolWin, ImgList, db, dbTables,
  Grids, DBGrids, ADOdb, Buttons, Variants;

type
  TRC_DfmPowerAssignManage = class(TForm)
    CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    CloseToolButton: TToolButton;
    Imagilist1: TImageList;
    DBGrid1: TDBGrid;
    FunctionResourceToolButton: TToolButton;
    GroupBox1: TGroupBox;
    AddSpeedButton: TSpeedButton;
    DeleteSpeedButton: TSpeedButton;
    Label2: TLabel;
    Label3: TLabel;
    ListBox1: TListBox;
    ListBox2: TListBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label4: TLabel;
    ConfirmToolButton: TToolButton;
    UserOrUserGroupName: TDBEdit;
    UserOrUserGroupIdentify: TDBEdit;
    DBNavigator1: TDBNavigator;
    procedure FormShow(Sender: TObject);
    procedure CloseToolButtonClick(Sender: TObject);
    procedure FunctionResourceToolButtonClick(Sender: TObject);
    procedure AddSpeedButtonClick(Sender: TObject);
    procedure DeleteSpeedButtonClick(Sender: TObject);
    procedure ConfirmToolButtonClick(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    function OpenPowerAssignQuery: Boolean;
    function OpenFunctionResourceQuery: Boolean;
    procedure PowerBrowse;
    procedure SsFunc(strFunc: string; Ssfunc: TStrings);
  public
    { Public declarations }
    UserToShow, UserGroupToShow: boolean;
    UserOrUserGroupDBGrid: TDBGrid;
    constructor Create(Owner: Tcomponent; AUserOrUserGroupDBGrid: TDBGrid);
      overload;
  end;

implementation

uses RC_FunctionResourceManage, RC_DataModule1;

{$R *.DFM}

//构造函数----------------------------------------------------------------------

constructor TRC_DfmPowerAssignManage.Create(Owner: Tcomponent;
  AUserOrUserGroupDBGrid: TDBGrid);
begin
  inherited Create(Owner);
  UserOrUserGroupDBGrid := AUserOrUserGroupDBGrid;
end;

//窗体--------------------------------------------------------------------------

procedure TRC_DfmPowerAssignManage.FormShow(Sender: TObject);
var
  UserOrUserGroupFunctionResourceString, SubString: string;
begin
  OpenPowerAssignQuery;
  OpenFunctionResourceQuery;
  //确认使用者------------------------------------------------------------------
  UserOrUserGroupName.Text := UserOrUserGroupDBGrid.Fields[0].AsString;
  if Trim(UserOrUserGroupDBGrid.Fields[0].DisplayLabel) = '用户名称' then
    UserOrUserGroupIdentify.Text := '用户'
  else
    UserOrUserGroupIdentify.Text := '用户组';
  //汉化字段名称----------------------------------------------------------------
  RC_DfmDataModule1.DPowerAssignQuery.First;
  while not RC_DfmDataModule1.DPowerAssignQuery.Eof do
  begin
    RC_DfmDataModule1.PowerAssignQuery.FieldByName(Trim(RC_DfmDataModule1.DPowerAssignQuery.FieldByName('FieldNameE').AsString)).DisplayLabel :=
      RC_DfmDataModule1.DPowerAssignQuery.FieldByName('FieldNameC').AsString;
    RC_DfmDataModule1.DPowerAssignQuery.Next;
  end;
  RC_DfmDataModule1.PowerAssignQuery.Fields[0].Visible := False;
  DBGrid1.DataSource := RC_DfmDataModule1.PowerAssignDataSource;
  DBNavigator1.DataSource := RC_DfmDataModule1.PowerAssignDataSource;
  //向列表框中输入功能名称------------------------------------------------------
  while not RC_DfmDataModule1.FunctionResourceQuery.Eof do
  begin
    ListBox2.Items.Add(RC_DfmDataModule1.FunctionResourceQuery.Fields[1].AsString);
    RC_DfmDataModule1.FunctionResourceQuery.Next;
  end;
  RC_DfmDataModule1.FunctionResourceQuery.First;
  //----------------------------------------------------------------------------
  if not RC_DfmDataModule1.PowerAssignQuery.Locate('UOrUGName;UOrUGIden',
    VarArrayOf([UserOrUserGroupName.Text, UserOrUserGroupIdentify.Text]), [])
      then
    Exit;
  UserOrUserGroupFunctionResourceString :=
    RC_DfmDataModule1.PowerAssignQuery.Fields[3].AsString;
  while pos(',', UserOrUserGroupFunctionResourceString) <> 0 do
  begin
    SubString := copy(UserOrUserGroupFunctionResourceString, 1, pos(',',
      UserOrUserGroupFunctionResourceString) - 1);
    ListBox1.Items.Add(Trim(SubString));
    UserOrUserGroupFunctionResourceString :=
      copy(UserOrUserGroupFunctionResourceString, pos(',',
      UserOrUserGroupFunctionResourceString) + 1, 400);
  end;
  SubString := copy(UserOrUserGroupFunctionResourceString, 1, 400);
  if SubString <> '' then
    ListBox1.Items.Add(Trim(SubString));
end;

//按钮--------------------------------------------------------------------------

procedure TRC_DfmPowerAssignManage.CloseToolButtonClick(Sender: TObject);
begin
  Close;
end;

//调整资源======================================================================

procedure TRC_DfmPowerAssignManage.AddSpeedButtonClick(Sender: TObject);
begin
  if ListBox2.ItemIndex = -1 then
    Exit;
  if ListBox1.Items.IndexOf(ListBox2.Items[ListBox2.ItemIndex]) = -1 then
    ListBox1.Items.Add(ListBox2.Items[ListBox2.ItemIndex]);
end;

procedure TRC_DfmPowerAssignManage.DeleteSpeedButtonClick(Sender: TObject);
begin
  if ListBox1.ItemIndex = -1 then
    Exit;
  ListBox1.Items.Delete(ListBox1.ItemIndex);
end;

//将分配结果写回----------------------------------------------------------------

procedure TRC_DfmPowerAssignManage.ConfirmToolButtonClick(Sender: TObject);
var
  ModifyUserOrUserGroupFunctionResourceString: string;
  i: integer;
begin
  {  TempQuery :=TADOQuery.Create(Self);
    with TempQuery do
    begin
        Connection :=RC_DfmDataModule1.ADOConnection1 ;
        Sql.Add('delete from TPowerAssign where UorUGname='+QuotedStr(UserOrUserGroupName.Text));
        Try execsql;
          except
          showmessage('error');
        end;
        Close ;
        Free ;
    end;}

  for i := 0 to ListBox1.Items.Count - 1 do
    ModifyUserOrUserGroupFunctionResourceString :=
      Trim(ModifyUserOrUserGroupFunctionResourceString + ListBox1.Items[i]) +
      ',';
  ModifyUserOrUserGroupFunctionResourceString :=
    Copy(ModifyUserOrUserGroupFunctionResourceString, 1,
    Length(ModifyUserOrUserGroupFunctionResourceString) - 1);
  if RC_DfmDataModule1.PowerAssignQuery.Locate('UOrUGName;UOrUGIden',
    VarArrayOf([UserOrUserGroupName.Text, UserOrUserGroupIdentify.Text]), [])
      then
  begin
    RC_DfmDataModule1.PowerAssignQuery.Edit;
    RC_DfmDataModule1.PowerAssignQuery.FieldByName('FunResName').AsString :=
      ModifyUserOrUserGroupFunctionResourceString;
    RC_DfmDataModule1.PowerAssignQuery.Post;
  end;
  Close;
end;

//调用功能资源管理==================================================================

procedure TRC_DfmPowerAssignManage.FunctionResourceToolButtonClick(
  Sender: TObject);
var
  DfmFunctionResouirceManage: TRC_DfmFunctionResouirceManage;
begin
  DfmFunctionResouirceManage := TRC_DfmFunctionResouirceManage.Create(Self);
  DfmFunctionResouirceManage.ShowModal;
  DfmFunctionResouirceManage.Free;
end;

function TRC_DfmPowerAssignManage.OpenPowerAssignQuery: Boolean;
begin
  Result := False;
  //打开功能权限分配表----------------------------------------------------------------
  with RC_DfmDataModule1.PowerAssignQuery do
  begin
    if Active then
      Close;
    Sql.Clear;
    if UserToShow then
      Sql.Add('Select * From TPowerAssign where UOrUGIden=' + QuotedStr('用户'))
    else if UserGroupToShow then
      Sql.add('Select * From TPowerAssign where UOrUGIden=' +
        QuotedStr('用户组'));
    try
      Open;
    except
      ShowMessage('无法打开库表!');
      Exit;
    end;
  end;
  RC_DfmDataModule1.PowerAssignQuery.FieldByName('PAId').Alignment :=
    taLeftJustify;
  with RC_DfmDataModule1.DPowerAssignQuery do
  begin
    if Active then
      Close;
    Sql.Clear;
    Sql.Add('Select * From DPowerAssign');
    try
      Open;
    except
      ShowMessage('无法打开库表!');
      Exit;
    end;
  end;
  Result := True;
end;

function TRC_DfmPowerAssignManage.OpenFunctionResourceQuery: Boolean;
begin
  Result := False;
  with RC_DfmDataModule1.FunctionResourceQuery do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Select * From TFunctionResource');
    try
      Open;
    except
      ShowMessage('无法打开库表!');
      Exit;
    end;
  end;
  RC_DfmDataModule1.FunctionResourceQuery.FieldByName('FunResId').Alignment :=
    taLeftJustify;
  with RC_DfmDataModule1.DFunctionResourceQuery do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Select * From DFunctionResource');
    try
      Open;
    except
      ShowMessage('无法打开库表!');
      Exit;
    end;
  end;
  Result := True;
end;

procedure TRC_DfmPowerAssignManage.DBGrid1CellClick(Column: TColumn);
begin
  PowerBrowse;
end;

procedure TRC_DfmPowerAssignManage.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  PowerBrowse;
end;

procedure TRC_DfmPowerAssignManage.PowerBrowse;
var
  Func: TStrings;
  strFunc: string;
begin
  if (DBGrid1.DataSource.DataSet is TADOTable) then
  begin
    UserOrUserGroupName.Text := (DBGrid1.DataSource.DataSet as
      TADOTable).FieldByName('UOrUGName').AsString;
    UserOrUserGroupIdentify.Text := (DBGrid1.DataSource.DataSet as
      TADOTable).FieldByName('UOrUGIden').AsString;
  end;
  if (DBGrid1.DataSource.DataSet is TADOQuery) then
  begin
    UserOrUserGroupName.Text := (DBGrid1.DataSource.DataSet as
      TADOQuery).FieldByName('UOrUGName').AsString;
    UserOrUserGroupIdentify.Text := (DBGrid1.DataSource.DataSet as
      TADOQuery).FieldByName('UOrUGIden').AsString;
  end;
  Func := TStringList.Create;
  strFunc := (DBGrid1.DataSource.DataSet as
    TADOQuery).FieldByName('FunResName').AsString;
  SsFunc(strFunc, Func);
  ListBox1.Items.Assign(Func);
  Func.Free;
end;

procedure TRC_DfmPowerAssignManage.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TRC_DfmPowerAssignManage.SsFunc(strFunc: string; Ssfunc: TStrings);
var
  sFunc: string;
begin
  if Trim(strFunc) = ' ' then
    Exit;
  while Pos(',', strFunc) <> 0 do
  begin
    sFunc := Copy(strFunc, 1, Pos(',', strFunc) - 1);
    StrFunc := Copy(strFunc, Pos(',', strFunc) + 1, Length(strFunc) - Pos(',',
      strFunc));
    Ssfunc.Add(sFunc);
  end;
  SsFunc.add(strFunc);
end;

end.

⌨️ 快捷键说明

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