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

📄 u_useset.pas

📁 小银行系统
💻 PAS
字号:
unit U_useset;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, U_child1_1, ADODB, DB, DosMove, DBTables, DBClient, Provider,
  Mask, StdCtrls, Buttons, DBCtrls, Grids, DBGridEh, ExtCtrls, wwdbedit,
  Wwdotdot, Wwdbcomb, Menus, Wwdbigrd, Wwdbgrid;

type
  TF_useset = class(TF_child1_1)
    ADODataSet2: TADODataSet;
    DataSetProvider2: TDataSetProvider;
    ClientDataSet2: TClientDataSet;
    ClientDataSet2user_no: TStringField;
    ClientDataSet2user_nm: TStringField;
    ClientDataSet2password: TStringField;
    ClientDataSet2administrator: TStringField;
    ClientDataSet2director: TStringField;
    ClientDataSet2fac_no: TStringField;
    ClientDataSet2sec_no: TStringField;
    ClientDataSet2add_date: TStringField;
    ClientDataSet2edit_date: TStringField;
    DataSource2: TDataSource;
    ADOQpub: TADOQuery;
    ClientDataSet1sys_id: TStringField;
    ClientDataSet1user_no: TStringField;
    ClientDataSet1program_no: TStringField;
    ClientDataSet1p_add: TStringField;
    ClientDataSet1p_edit: TStringField;
    ClientDataSet1p_delete: TStringField;
    ClientDataSet1p_query: TStringField;
    ClientDataSet1p_getdata: TStringField;
    ClientDataSet1p_print: TStringField;
    ClientDataSet1p_datain: TStringField;
    ClientDataSet1p_dataout: TStringField;
    ClientDataSet1mod_rights: TStringField;
    ClientDataSet1add_date: TStringField;
    ClientDataSet1edit_date: TStringField;
    ClientDataSet1program_nm: TStringField;
    wwDBGrid1: TwwDBGrid;
    mod_rightsCombo: TwwDBComboBox;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N4: TMenuItem;
    N3: TMenuItem;
    N2: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    ClientDataSet1p_browse: TStringField;
    ClientDataSet1program_id: TStringField;
    procedure N1Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure setrights(value:integer);
    procedure FormCreate(Sender: TObject);
    procedure ClientDataSet2AfterScroll(DataSet: TDataSet);
    procedure ClientDataSet2BeforeScroll(DataSet: TDataSet);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    VSEEK:STRING;    //保留主键值
    procedure DoInsert;override;
    procedure DoEdit;override;
    procedure DoQuery;override;
    procedure DoDelete;override;
    procedure DoGetData;override;
    procedure DoSave;override;
    procedure DoCancel;override;
    procedure DoCloseForm;override;

  end;

var
  F_useset: TF_useset;

implementation
uses U_main,UDM;

{$R *.dfm}
//新增资料
procedure Tf_useset.DoInsert;
var vuser_no,sqlstr :string;
begin
  //inherited;
  mlog:=mAdd;
  self.ScrollBox2.Enabled:=true;
  self.ScrollBox1.Enabled:=false;

  vuser_no := self.ClientDataSet2user_no.Value ;

  //如果是新增,则将所有模块先赋给该用户,但无任何权限
  sqlstr :='INSERT INTO setprogram(sys_id,user_no,program_id,program_no,p_add,p_edit,p_delete, '+
       'p_query,p_getdata,p_print,p_datain,p_dataout,p_browse,add_date)'+
       ' (SELECT ''4'','''+vuser_no+''',A.program_id,A.program_no, '+
       '''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'','''+F_MAIN.vTodayDate+''' FROM program A '+
       ' WHERE A.sys_id=''4'' and A.program_id +A.program_no not in (select program_id+program_no from setprogram '+
       ' where sys_id=''4'' and user_no='''+vuser_no+''') )' ;

  //新增权限
  with ADOQpub do
  begin
    Close;SQL.Clear;SQL.Add(Sqlstr);
    ExecSQL;
  end ;

  self.ClientDataSet1.Active :=false;
  self.ClientDataSet1.Params.ParamByName('user_no').Value :=VUSER_NO ;
  self.ClientDataSet1.Active :=true;

  f_main.DBNavigator1.Enabled:=false;
  self.ClientDataSet1.Edit ;
  ScrollBox1.Enabled :=false;
  ScrollBox2.Enabled :=true;
  wwDBGrid1.ReadOnly :=false;
  //wwDBGrid1.SetFocus ;
end;

//修改资料
procedure Tf_useset.DoEdit;
begin
  inherited;
  wwDBGrid1.ReadOnly :=false;
end;

//删除资料
procedure Tf_useset.DoDelete;
begin
  inherited;
end;

//查询资料
procedure Tf_useset.DoQuery;
begin
  inherited;
end;

//取得数据
procedure Tf_useset.DoGetData;
begin
  inherited;
end;

//存档
procedure Tf_useset.DoSave;
begin
  self.ClientDataSet1.Edit ;
  self.ClientDataSet1user_no.Value := self.ClientDataSet2user_no.Value ;

  inherited;
  wwDBGrid1.ReadOnly :=true;
end;

//取消操作
procedure Tf_useset.DoCancel;
begin
  inherited;
  wwDBGrid1.ReadOnly :=true;
end;

//结束操作
procedure Tf_useset.DoCloseForm;
begin
  inherited;
end;

procedure TF_useset.setrights(value:integer);
var vStr,TSQLset,TSQlclear,TSQlwhere,TSQLEnable,vmodulescode:string;
    BK:TBookMark;
begin
 {value:
 1: 赋予所有项全部权限,菜单可见
 2: 赋予该项全部权限,菜单可见
 3: 清除所有项全部权限,菜单为灰色
 4: 清除该项全部权限,菜单为灰色
 5: 赋予所有菜单为可见
 6: 赋予所有菜单为可见但为灰色}


  if (self.ClientDataSet1user_no.Value ='') then
  begin
  showmessage('用户权限设定时,用户不可为空,请选择用户!');
  exit;
  end;

  BK:=self.ClientDataSet1.GetBookmark ;

  TSQLset:='UPdate setprogram set '+
  ' p_add=''Y'',p_edit=''Y'',p_delete=''Y'',p_query=''Y'',p_getdata=''Y'','+
  ' p_print=''Y'',p_browse=''Y'',p_datain=''Y'',p_dataout=''Y'' ';

  TSQlclear:='UPdate setprogram set '+
  ' p_add=''N'',p_edit=''N'',p_delete=''N'',p_query=''N'',p_getdata=''N'','+
  ' p_print=''N'',p_browse=''N'',p_datain=''N'',p_dataout=''N'' ';

  TSQLEnable:='UPdate setprogram set  ';

  TSQlwhere:=' WHERE  sys_id=''4'' AND user_no='''+self.ClientDataSet1user_no.Value +'''';
  { modulesrights:
  0:DisEnabled
  1:Enabled
  2:hide  }
  if value=1 then   //1: 赋予所有项全部权限,菜单可见
    begin
    if MessageDlg('请确认是否赋予所有项全部权限给[ '+self.ClientDataSet1user_no.Value +' ]用户?',mtCustom, [mbYes, mbNo], 0) = mrNo then
    exit;
    TSQLset:=TSQLset+',mod_rights=''1''';
    end;
  if value=2 then  //2: 赋予该项全部权限,菜单可见
    begin
    TSQLset:=TSQLset+',mod_rights=''1''';
    TSQLwhere:=TSQLWhere+' and program_id='''+self.ClientDataSet1program_id.Value +
    ''' and program_no='''+self.ClientDataSet1program_no.Value +'''';
    end;
  if value=3 then  //3: 清除所有项全部权限,菜单为灰色
    begin
    if MessageDlg('请确认是否清除[ '+self.ClientDataSet2user_no.Value +' ]用户的所有项全部权限?',mtCustom, [mbYes, mbNo], 0) = mrNo then
    exit;
    TSQLset:='';
    TSQLset:=TSQLclear+',mod_rights=''0''';
    end;
  if value=4 then  //4: 清除该项全部权限,菜单为灰色
    begin
    TSQLset:='';
    TSQLset:=TSQLclear+',mod_rights=''0''';
    TSQLwhere:=TSQLWhere+' and program_id='''+self.ClientDataSet1program_id.Value +
     '''  and program_no='''+self.ClientDataSet1program_no.Value +'''';
    end;
  if value=5 then  //5: 赋予所有菜单为可见
    begin
    TSQLset:='';
    TSQLset:=TSQLEnable+'mod_rights=''1''';
    end;
  if value=6 then  //6: 赋予所有菜单为可见但为灰色
    begin
    TSQLset:='';
    TSQLset:=TSQLEnable+'mod_rights=''0''';
    end;

  TSQLset:=TSQLset+TSQLWhere;

  //修改权限
  with ADOQpub do
  begin
    Close;SQL.Clear;SQL.Add(TSQLset);
    ExecSQL;
  end ;

  //更新结果
  self.ClientDataSet1.Active :=false;
  self.ClientDataSet1.Params.ParamByName('user_no').Value :=
       self.ClientDataSet2user_no.Value ;
  self.ClientDataSet1.Active :=true ;
  self.ClientDataSet1.GotoBookMark(BK);

end;


procedure TF_useset.N1Click(Sender: TObject);
begin
  inherited;
  setrights(1);  //1: 赋予所有项全部权限,菜单可见

end;

procedure TF_useset.N4Click(Sender: TObject);
begin
  inherited;
  setrights(2); // 2: 赋予该项全部权限,菜单可见

end;

procedure TF_useset.N2Click(Sender: TObject);
begin
  inherited;
  setrights(3); //3: 清除所有项全部权限,菜单为灰色

end;

procedure TF_useset.N8Click(Sender: TObject);
begin
  inherited;
  setrights(4); //4: 清除该项全部权限,菜单为灰色

end;

procedure TF_useset.FormCreate(Sender: TObject);
begin
  inherited;
  self.ClientDataSet2.Close ;
  self.ClientDataSet2.Active :=true;

  self.ClientDataSet1.Close ;
  self.ClientDataSet1.Active :=true;
  wwDBGrid1.ReadOnly :=true;
  DBGrid1.Visible :=true;
end;

procedure TF_useset.ClientDataSet2AfterScroll(DataSet: TDataSet);
begin
  inherited;
  self.ClientDataSet1.Active :=false;
  self.ClientDataSet1.Params.ParamByName('user_no').Value :=
       self.ClientDataSet2user_no.Value ;
  self.ClientDataSet1.Active :=true;

end;

procedure TF_useset.ClientDataSet2BeforeScroll(DataSet: TDataSet);
begin
  inherited;
  VSEEK:= self.ClientDataSet2user_no.Text ;

end;

procedure TF_useset.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  self.ClientDataSet1.Free ;
  self.ADODataSet2.Free ;
  self.ClientDataSet1.Free ;
  self.ADODataSet1.Free ;
  self.ADOQpub.Free ;
  F_useset :=nil;

end;

procedure TF_useset.N5Click(Sender: TObject);
begin
  inherited;
  setrights(5);  //5: 赋予所有菜单为可见

end;

procedure TF_useset.N6Click(Sender: TObject);
begin
  inherited;
  setrights(6); //6: 赋予所有菜单为可见但为灰色

end;

end.

⌨️ 快捷键说明

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