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

📄 mseduserpermissions.pas

📁 详细的ERP设计资料
💻 PAS
字号:
unit MSEdUserPermissions;
{******************************************
项目:
模块:用户授权管理
日期:2002年11月5日
作者:贺才伟
更新:
******************************************}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, WSStandardEdit, StdCtrls, DB, ADODB, ComCtrls, CommonDM, Grids,
  DBGrids, QLDBGrid, CheckLst;

type
  TMSUserPermissionsEditForm = class(TWSStandardEditForm)
    Label1: TLabel;
    adsUserPermissionsClass: TADODataSet;
    Label2: TLabel;
    Label3: TLabel;
    lvPermissions: TListView;
    lbClass: TListBox;
    adrUserPermissions: TADOQuery;
    btnSelectAll: TButton;
    btnSelectNone: TButton;
    lbName: TLabel;
    procedure lbClassClick(Sender: TObject);
    procedure OKButtonClick(Sender: TObject);
    procedure btnSelectAllClick(Sender: TObject);
    procedure btnSelectNoneClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure lvPermissionsChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure Save;
  private
    lModify: Boolean;
    vID :string;
    procedure  SelectAll(ltype: Boolean);
    { Private declarations }
  public
    { Public declarations }
    function Edit(const Params: Variant): Boolean;override;
  end;

var
  MSUserPermissionsEditForm: TMSUserPermissionsEditForm;

implementation

{$R *.dfm}
procedure TMSUserPermissionsEditForm.SelectAll(ltype: Boolean);
var
  i: integer;
begin
  for i := 0 to lvPermissions.Items.Count - 1 do
  begin
    lvPermissions.Items.Item[i].Checked := lType;
  end;
end;

function TMSUserPermissionsEditForm.Edit(const Params: Variant): Boolean;
begin
  vID := Format('%s', [VarToStr(Params)]);
  lbClass.Items.Add('<全部>');
  with adsUserPermissionsClass do
  begin
    Close;
    CommandText := 'select Name from MSRole where id='+vID;
    Open;
    lbName.Caption := FieldByName('Name').AsString;
    Close;
    CommandText := 'select * from MSPermissionClass';
    Open;
    First;
    while not eof do
    begin
      lbClass.Items.Add(FieldByName('Name').AsString);
      Next;
    end;
    Close;
  end;
  Result := ShowModal = mrOK;
end;

procedure TMSUserPermissionsEditForm.lbClassClick(Sender: TObject);
var
  nIndex: integer;
begin
  inherited;
  if lModify then
  begin
    if MessageBox(Handle,'是否保存所做修改?','确认',MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON1) = ID_YES then
    begin
      Save;
//      OKButton.Click;
    end;
  end;

  nIndex := lbClass.ItemIndex;
  with adrUserPermissions do
  begin
    Close;
    SQL.Clear;
//    if nIndex = lbClass.Items.Count-1 then
    if nIndex = 0 then
      SQL.Add('select ID,Name from MSPermission where PermissionClassID in (select ID from MSPermissionClass)')
    else
      SQL.Add('select ID,Name from MSPermission where PermissionClassID in (select ID from MSPermissionClass where Name='''+lbClass.Items.Strings[nIndex]+''')');
    Open;
    First;
    lvPermissions.Clear;
    while not eof do
    begin
      lvPermissions.AddItem(FieldByName('Name').AsString,nil);
      lvPermissions.Items.Item[lvPermissions.Items.Count-1].ImageIndex := FieldbyName('ID').AsInteger;
      adsUserPermissionsClass.Close;
      adsUserPermissionsClass.CommandText := 'select * from MSRolePermissions where RoleID='+vID+' and PermissionID='+ FieldByName('ID').AsString;
      adsUserPermissionsClass.Open;
      if not adsUserPermissionsClass.IsEmpty then
        lvPermissions.Items.Item[lvPermissions.Items.Count-1].Checked := True ;
      Next;
    end;
    Active := True ;
  end;
  lModify := False;
end;

procedure TMSUserPermissionsEditForm.OKButtonClick(Sender: TObject);
//var
//  i,nIndex: integer;
begin
  inherited;
{  nIndex := lbClass.ItemIndex;
  with adrUserPermissions do
  begin
    Close;
    SQL.Clear;
    if nIndex = 0 then
      SQL.Add('delete MSRolePermissions where RoleID=' + vID )
    else
      SQL.Add('DELETE MSRolePermissions WHERE RoleID=' + vID +' AND PermissionID IN (SELECT ID FROM MSPermission WHERE PermissionClassID=(SELECT ID FROM MSPermissionClass WHERE Name='''+lbClass.Items.Strings[nIndex]+'''))');
    for i := 0 to lvPermissions.Items.Count-1 do
    begin
      if lvPermissions.Items.Item[i].Checked then
        SQL.Add('insert into MSRolePermissions values(' + vID + ',' + IntToStr(lvPermissions.Items.Item[i].ImageIndex) + ')');
    end;
    ExecSQL;
  end;
}
  if lModify then Save;
  ModalResult := mrOK;
end;

procedure TMSUserPermissionsEditForm.btnSelectAllClick(Sender: TObject);
begin
  inherited;
  SelectAll(true);
end;

procedure TMSUserPermissionsEditForm.btnSelectNoneClick(Sender: TObject);
begin
  inherited;
  SelectAll(False);
end;

procedure TMSUserPermissionsEditForm.FormShow(Sender: TObject);
begin
  inherited;
  lbClass.Selected[0] := True;
  lbClass.SetFocus;
  lbClass.OnClick(nil);
end;

procedure TMSUserPermissionsEditForm.lvPermissionsChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  inherited;
  lModify := True;
end;
procedure TMSUserPermissionsEditForm.Save();
var
  i,nIndex: integer;
begin
  inherited;
  nIndex := lbClass.ItemIndex;
  with adrUserPermissions do
  begin
    Close;
    SQL.Clear;
    if nIndex = 0 then
      SQL.Add('delete MSRolePermissions where RoleID=' + vID )
    else
      SQL.Add('DELETE MSRolePermissions WHERE RoleID=' + vID +' AND PermissionID IN (SELECT ID FROM MSPermission WHERE PermissionClassID=(SELECT ID FROM MSPermissionClass WHERE Name='''+lbClass.Items.Strings[nIndex]+'''))');
    for i := 0 to lvPermissions.Items.Count-1 do
    begin
      if lvPermissions.Items.Item[i].Checked then
        SQL.Add('insert into MSRolePermissions values(' + vID + ',' + IntToStr(lvPermissions.Items.Item[i].ImageIndex) + ')');
    end;
    ExecSQL;
  end;
end;
end.

⌨️ 快捷键说明

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