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

📄 permissionfrm.pas

📁 这是一个本人初定的小制作
💻 PAS
字号:
unit PermissionFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, MainDM, CommonFunc, CheckLst, ExtCtrls;

type
  TPermissionDlg = class(TForm)
    GroupBox1: TGroupBox;
    LBGroupName: TListBox;
    CLBPermission: TCheckListBox;
    BtnAdd: TButton;
    BtnExit: TButton;
    Panel1: TPanel;
    Panel2: TPanel;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure BtnAddClick(Sender: TObject);
    procedure CLBPermissionClick(Sender: TObject);
    procedure LBGroupNameClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    function GetSelectedUserName: string;
    procedure RefreshGroupName;
    procedure ShowUserRight(AUserName: string);
    procedure SetUserRight(AUserName: string);
  public
    { Public declarations }
  end;

var
  PermissionDlg: TPermissionDlg;

implementation

{$R *.dfm}

procedure TPermissionDlg.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
  Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TPermissionDlg.RefreshGroupName;
var
  LName: string;
begin
  LBGroupName.Clear;
  DMMain.ADOTPermission.Open;
  DMMain.ADOTPermission.First;
  while not DMMain.ADOTPermission.Eof do
  begin
    LName := DMMain.ADOTPermission.FieldByName('Name').AsString;
    LBGroupName.Items.Add(LName);
    DMMain.ADOTPermission.Next;
  end;
end;

function TPermissionDlg.GetSelectedUserName: string;
var
  LIndex: integer;
begin
  LIndex := LBGroupName.ItemIndex;
  if LIndex >= 0 then
    result := LBGroupName.Items.Strings[LIndex]
  else
    result := '';
end;

procedure TPermissionDlg.FormShow(Sender: TObject);
begin
  RefreshGroupName;
end;

procedure TPermissionDlg.BtnAddClick(Sender: TObject);
var
  LName: string;
begin
  if InputQuery('请输入', '请输入新建权限组的名称!',
    LName) then
  begin
    if Length(LName) >= 20 then
    begin
      LCShowMessage('名称不能超过20个字符!');
      Exit;
    end;
    DMMain.ADOTPermission.First;
    if DMMain.ADOTPermission.Locate('Name', LName, []) then
    begin
      LCShowMessage('此权限组名已经存在!');
      Exit;
    end
    else
    begin
      LBGroupName.Items.Add(LName);
      DMMain.ADOTPermission.Append;
      DMMain.ADOTPermission.FieldByName('Name').AsString := LName;
      DMMain.ADOTPermission.Post;
    end;
  end;
end;

procedure TPermissionDlg.ShowUserRight(AUserName: string);
begin
  DMMain.ADOTPermission.First;
  if DMMain.ADOTPermission.Locate('Name', AUserName, []) then
  begin
    CLBPermission.Checked[0] := DMMain.ADOTPermission.FieldByName('SalesManQuery').AsBoolean;
    CLBPermission.Checked[1] := DMMain.ADOTPermission.FieldByName('SaleBackQuery').AsBoolean;
    CLBPermission.Checked[2] := DMMain.ADOTPermission.FieldByName('StorageQuery').AsBoolean;
    CLBPermission.Checked[3] := DMMain.ADOTPermission.FieldByName('SaleBackInput').AsBoolean;
    CLBPermission.Checked[4] := DMMain.ADOTPermission.FieldByName('StockInInput').AsBoolean;
    CLBPermission.Checked[5] := DMMain.ADOTPermission.FieldByName('SaleInput').AsBoolean;
    CLBPermission.Checked[6] := DMMain.ADOTPermission.FieldByName('StockOutInput').AsBoolean;
    CLBPermission.Checked[7] := DMMain.ADOTPermission.FieldByName('CompanyInfoMgr').AsBoolean;
    CLBPermission.Checked[8] := DMMain.ADOTPermission.FieldByName('PermissionMgr').AsBoolean;
    CLBPermission.Checked[9] := DMMain.ADOTPermission.FieldByName('OperatorMgr').AsBoolean;
    CLBPermission.Checked[10] := DMMain.ADOTPermission.FieldByName('SalesManMgr').AsBoolean;
    CLBPermission.Checked[11] := DMMain.ADOTPermission.FieldByName('GoodMgr').AsBoolean;
    CLBPermission.Checked[12] := DMMain.ADOTPermission.FieldByName('DepartMgr').AsBoolean;
    CLBPermission.Checked[13] := DMMain.ADOTPermission.FieldByName('DBBackup').AsBoolean;
  end
  else
    LCShowMessage('不存在的用户名!');
end;

procedure TPermissionDlg.SetUserRight(AUserName: string);
begin
  DMMain.ADOTPermission.First;
  if DMMain.ADOTPermission.Locate('Name', AUserName, []) then
  begin
    DMMain.ADOTPermission.Edit;
    DMMain.ADOTPermission.FieldByName('SalesManQuery').AsBoolean := CLBPermission.Checked[0];
    DMMain.ADOTPermission.FieldByName('SaleBackQuery').AsBoolean := CLBPermission.Checked[1];
    DMMain.ADOTPermission.FieldByName('StorageQuery').AsBoolean := CLBPermission.Checked[2];
    DMMain.ADOTPermission.FieldByName('SaleBackInput').AsBoolean := CLBPermission.Checked[3];
    DMMain.ADOTPermission.FieldByName('StockInInput').AsBoolean := CLBPermission.Checked[4];
    DMMain.ADOTPermission.FieldByName('SaleInput').AsBoolean := CLBPermission.Checked[5];
    DMMain.ADOTPermission.FieldByName('StockOutInput').AsBoolean := CLBPermission.Checked[6];
    DMMain.ADOTPermission.FieldByName('CompanyInfoMgr').AsBoolean := CLBPermission.Checked[7];
    DMMain.ADOTPermission.FieldByName('PermissionMgr').AsBoolean := CLBPermission.Checked[8];
    DMMain.ADOTPermission.FieldByName('OperatorMgr').AsBoolean := CLBPermission.Checked[9];
    DMMain.ADOTPermission.FieldByName('SalesManMgr').AsBoolean := CLBPermission.Checked[10];
    DMMain.ADOTPermission.FieldByName('GoodMgr').AsBoolean := CLBPermission.Checked[11];
    DMMain.ADOTPermission.FieldByName('DepartMgr').AsBoolean := CLBPermission.Checked[12];
    DMMain.ADOTPermission.FieldByName('DBBackup').AsBoolean := CLBPermission.Checked[13];
    DMMain.ADOTPermission.Post;
  end
  else
    LCShowMessage('不存在的用户名!');
end;

procedure TPermissionDlg.CLBPermissionClick(Sender: TObject);
var
  LUserName: string;
begin
  LUserName := GetSelectedUserName();
  if LUserName <> '' then
    SetUserRight(LUserName);
end;

procedure TPermissionDlg.LBGroupNameClick(Sender: TObject);
begin
  ShowUserRight(GetSelectedUserName())
end;

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

end.

⌨️ 快捷键说明

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