📄 untgrouprightset.pas
字号:
unit untGroupRightSet;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MDIBase, Base, StdCtrls, ExtCtrls, Grids, DB, DBClient,
ADODB, Wwdbigrd, Wwdbgrid, DBGrids, DBGridEh, MSNPopUp;
type
TfrmGroupRightSet = class(TfrmMDIBase)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Splitter2: TSplitter;
Panel4: TPanel;
btnExit: TButton;
CDSMaster: TClientDataSet;
DSMaster: TDataSource;
CDSmodule: TClientDataSet;
DSmodule: TDataSource;
CDSfunction: TClientDataSet;
DSfunction: TDataSource;
acAllCheck: TButton;
acAllUnCheck: TButton;
btnsave: TButton;
btncancels: TButton;
CDSright: TClientDataSet;
CDSMasterfid: TAutoIncField;
CDSMasterfcode: TWideStringField;
CDSMasterfname: TWideStringField;
CDSMasterfremark: TWideStringField;
CDSmodulefID: TIntegerField;
CDSmodulefName: TWideStringField;
wwDBGrid1: TwwDBGrid;
Splitter1: TSplitter;
wwDBGrid2: TwwDBGrid;
DBGridEh1: TDBGridEh;
MSNsaveinfo: TMSNPopUp;
procedure FormDestroy(Sender: TObject);
procedure btnExitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btncancelsClick(Sender: TObject);
procedure acAllCheckClick(Sender: TObject);
procedure acAllUnCheckClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure btnsaveClick(Sender: TObject);
procedure DSfunctionStateChange(Sender: TObject);
procedure DSfunctionDataChange(Sender: TObject; Field: TField);
procedure DSMasterDataChange(Sender: TObject; Field: TField);
procedure DSmoduleDataChange(Sender: TObject; Field: TField);
private
{ Private declarations }
protected
bCanModify :Boolean;
Function CheckSave: Boolean;
Procedure GetPermiss ; virtual;
function LoadData(GroupID,ModuleID:Integer):boolean;
procedure GetallFunction;
public
{ Public declarations }
end;
var
frmGroupRightSet: TfrmGroupRightSet;
implementation
uses Global, DataProcess;
{$R *.dfm}
procedure TfrmGroupRightSet.FormDestroy(Sender: TObject);
begin
inherited;
frmGroupRightSet:=nil;
end;
function TfrmGroupRightSet.CheckSave: Boolean;
begin
Result:=True;
if CDSright.State in [dsEdit,dsInsert] then
begin
Case Messagedlg('是否保存当前修改 ? ',mtWarning,[mbYes,mbNo,mbCancel],0) of
mrYes:
begin
Result:=True;
btnsaveClick(self);
end;
mrNo:
Result:=True;
mrCancel:
Result := False ;
End;
end;
end;
procedure TfrmGroupRightSet.btnExitClick(Sender: TObject);
begin
inherited;
close;
end;
procedure TfrmGroupRightSet.GetPermiss;
begin
bCanModify :=True;
with DLLCDS do
if Locate('fModuleID;fActionName',varArrayOf([iModuleID,sFunctionName]),[]) then
bCanModify := FieldByName('fEdit').AsBoolean;
end;
procedure TfrmGroupRightSet.FormCreate(Sender: TObject);
begin
inherited;
GetPermiss;
DSfunctionStateChange(self);
Getsqldata(CDSMaster,'Tusergroupinfo','fid','fid>0');
Getsqldata(CDSmodule,'TModule','fid','fid>0');
GetallFunction;
end;
procedure TfrmGroupRightSet.btncancelsClick(Sender: TObject);
begin
inherited;
if CDSright.State in [dsEdit,dsInsert] then
if messagedlg('是否取消当前修改 ? ',mtWarning,[mbOk,mbCancel],0)=mrOk then
begin
CDSRight.Cancel;
end;
end;
procedure TfrmGroupRightSet.acAllCheckClick(Sender: TObject);
var
i: Integer;
begin
inherited;
CDSfunction.DisableControls;
With CDSFunction do
begin
first;
While not Eof do
begin
For i:=0 to FieldCount-1 do
begin
if (Fields[i].DataType = ftBoolean)
and (Fields[i].AsBoolean = False) then
begin
if State <> dsEdit then Edit ;
Fields[i].AsBoolean:=True;
end;
end;
next;
end;
if State in [dsInsert,dsEdit] then Post;
First;
end;
CDSFunction.EnableControls ;
end;
procedure TfrmGroupRightSet.acAllUnCheckClick(Sender: TObject);
var
i: Integer;
begin
inherited;
CDSFunction.DisableControls ;
With CDSFunction do
begin
first;
While not Eof do
begin
For i:=0 to FieldCount-1 do
if (Fields[i].DataType = ftBoolean)
and (Fields[i].AsBoolean = True) then
begin
if State <> dsEdit then Edit ;
Fields[i].AsBoolean := False;
end;
next;
end;
if State in [dsInsert,dsEdit] then Post;
First;
end;
CDSFunction.EnableControls ;
end;
procedure TfrmGroupRightSet.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
inherited;
CanClose:=CheckSave;
end;
function TfrmGroupRightSet.LoadData(GroupID, ModuleID: Integer): boolean;
begin
Result:=False;
Getsqldata(CDSfunction,'Tfunction','fid','fModuleID='+inttostr(ModuleID));
GetsqlData(CDSright,'TGroupRight','fid','fGroupid='+inttostr(GroupID));
CDSfunction.DisableControls;
CDSfunction.First;
while not CDSfunction.Eof do
begin
CDSright.First;
while not CDSright.Eof do
begin
if CDSright.FieldByName('fFunctionID').AsInteger = CDSfunction.FieldByName('fid').AsInteger then
begin
CDSfunction.Edit;
cdsfunction.FieldByName('frun').AsBoolean:=CDSright.FieldByName('frun').AsBoolean;
cdsfunction.FieldByName('finsert').AsBoolean:=CDSright.FieldByName('finsert').AsBoolean;
cdsfunction.FieldByName('fedit').AsBoolean:=CDSright.FieldByName('fedit').AsBoolean;
cdsfunction.FieldByName('fdelete').AsBoolean:=CDSright.FieldByName('fdelete').AsBoolean;
cdsfunction.FieldByName('fprint').AsBoolean:=CDSright.FieldByName('fprint').AsBoolean;
cdsfunction.FieldByName('fconfirm').AsBoolean:=CDSright.FieldByName('fconfirm').AsBoolean;
cdsfunction.FieldByName('fcancel').AsBoolean:=CDSright.FieldByName('fcancel').AsBoolean;
cdsfunction.FieldByName('ffinish').AsBoolean:=CDSright.FieldByName('ffinish').AsBoolean;
cdsfunction.FieldByName('fstart').AsBoolean:=CDSright.FieldByName('fstart').AsBoolean;
CDSfunction.Post;
end;
CDSright.Next;
end;
CDSfunction.Next;
end;
CDSfunction.EnableControls;
end;
procedure TfrmGroupRightSet.btnsaveClick(Sender: TObject);
var
strsql:string;
begin
inherited;
strsql:='Delete from tGroupRight where fGroupID='+inttostr(CDSMaster.fieldbyname('fid').AsInteger);
cexecsql(strsql);
CDSfunction.DisableControls;
if CDSfunction.RecordCount > 0 then
CDSfunction.First;
while not CDSfunction.Eof do
begin
strsql:='';
strsql:='Insert into TgroupRight(fgroupid,ffunctionid,frun,finsert,fedit,fdelete,fprint,fconfirm,fcancel,ffinish,fstart) values(';
strsql:=strsql+inttostr(CDSMaster.fieldbyname('fid').AsInteger)+',';
strsql:=strsql+inttostr(CDSfunction.fieldbyname('fID').AsInteger)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('frun').AsBoolean)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('finsert').AsBoolean)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('fedit').AsBoolean)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('fdelete').AsBoolean)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('fprint').AsBoolean)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('fconfirm').AsBoolean)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('fcancel').AsBoolean)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('ffinish').AsBoolean)+',';
strsql:=strsql+vartosql(CDSfunction.fieldbyname('fstart').AsBoolean)+')';
cexecsql(strsql);
CDSfunction.next;
end;
MSNsaveinfo.Title:='信息提示';
MSNsaveinfo.Text:='修改用户组权限 , 用户组ID='+inttostr(CDSmaster.fieldbyname('fid').AsInteger);
MSNsaveinfo.ShowPopUp;
CDSfunction.First;
CDSfunction.EnableControls;
end;
procedure TfrmGroupRightSet.DSfunctionStateChange(Sender: TObject);
begin
inherited;
acAllCheck.Enabled:=BcanModify;
acAllUnCheck.Enabled:=BcanModify;
btnsave.Enabled:=BcanModify;
btncancels.Enabled:=BcanModify;
end;
procedure TfrmGroupRightSet.DSfunctionDataChange(Sender: TObject;
Field: TField);
begin
inherited;
DSfunctionStateChange(self);
end;
procedure TfrmGroupRightSet.GetallFunction;
var
CGroupid:integer;
CfunctionID:integer;
begin
Cgroupid:=CDSMaster.fieldbyname('fid').AsInteger;
CfunctionID:=CDSModule.fieldbyname('fid').AsInteger;
LoadData(CGroupID,CfunctionID);
end;
procedure TfrmGroupRightSet.DSMasterDataChange(Sender: TObject;
Field: TField);
begin
inherited;
GetallFunction;
end;
procedure TfrmGroupRightSet.DSmoduleDataChange(Sender: TObject;
Field: TField);
begin
inherited;
GetallFunction;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -