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

📄 untgrouprightset.pas

📁 用delphi编写的数据库管理软件
💻 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 + -