📄 u_useset.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 + -