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

📄 yhzgl_form.pas

📁 Delphi7和ACCESS开发的用户权限管理的源程序.
💻 PAS
字号:
unit YHZGL_Form;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TFlatEditUnit, TFlatRadioButtonUnit, TFlatButtonUnit,
  Grids, DBGrids, TFlatGroupBoxUnit, ExtCtrls, TFlatPanelUnit,DB,ADODB,
  TFlatSpeedButtonUnit, TFlatListBoxUnit, TFlatCheckListBoxUnit, Menus;

type
  TYHZGL_F = class(TForm)
    YHZ_DS: TDataSource;
    FlatButton1: TFlatButton;
    QX_DS: TDataSource;
    Edit1: TEdit;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    PopupMenu2: TPopupMenu;
    N2: TMenuItem;
    N3: TMenuItem;
    TJ_FB: TFlatButton;
    FlatButton2: TFlatButton;
    FlatGroupBox8: TFlatGroupBox;
    Label18: TLabel;
    Label19: TLabel;
    ZBH_FE: TFlatEdit;
    ZMC_FE: TFlatEdit;
    LHZGL_FBtn: TFlatButton;
    FlatGroupBox5: TFlatGroupBox;
    YHZ_DG: TDBGrid;
    FlatGroupBox1: TFlatGroupBox;
    QX_DG1: TDBGrid;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure Close_BtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure YHZ_DGMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure TJ_FRBtnClick(Sender: TObject);
    procedure XG_FRBtnClick(Sender: TObject);
    procedure FlatButton1Click(Sender: TObject);
    procedure TJ_FBClick(Sender: TObject);
    procedure FlatButton2Click(Sender: TObject);
    procedure LHZGL_FBtnClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure QX_DG1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ClickDBG;
  end;

var
  YHZGL_F: TYHZGL_F;

implementation

uses share, ZGNB_Form, CZRZ_Form;



{$R *.dfm}

var
  YHZ_T:TADOTable;
  YHGNB_T:TADOTable;    // 用户功能表
  YHB_Q:TADOQuery;    // 用户表
//******************************************************************************  
procedure TYHZGL_F.ClickDBG;
begin
  ZH1:=YHZ_DG.Fields[0].AsString;
  FlatGroupBox1.Caption:=YHZ_DG.Fields[1].AsString+ '已有权限';
  ZGNB_Q.Close;
  ZGNB_Q.SQL.Clear;
  ZGNB_Q.SQL.Add('Select 功能名,A.功能号 From 组功能表 A,功能表 B Where 组号=:组号 and A.功能号=B.功能号');
  ZGNB_Q.Parameters.ParamByName('组号').Value:=YHZ_DG.Fields[0].AsString;

  QX_DS.DataSet:=ZGNB_Q;
  QX_DG1.Columns[0].FieldName:='功能名';
  ZGNB_Q.Open;
end;
//******************************************************************************
procedure TYHZGL_F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;
//***********************************************************************************
procedure TYHZGL_F.FormDestroy(Sender: TObject);
begin
  FreeAndNil(YHZ_T);
  FreeAndNil(ZGNB_Q);
  YHZGL_F:=nil;
  CZRZ_F.CZRZ_FM.Lines.Add('');
end;
//***********************************************************************************
procedure TYHZGL_F.Close_BtnClick(Sender: TObject);
begin
  close;
end;
//***********************************************************************************
procedure TYHZGL_F.FormCreate(Sender: TObject);
begin
  YHZ_T:=TADOTable.Create(nil);
  YHZ_T.Connection:=Connect;
  YHZ_T.TableName:='用户组表';
  YHZ_DS.DataSet:=YHZ_T;
  YHZ_DG.Columns[0].FieldName:='组号';
  YHZ_DG.Columns[1].FieldName:='组名';
  YHZ_T.Open;

  YHGNB_T:=TADOTable.Create(nil);
  YHGNB_T.Connection:=Connect;
  YHGNB_T.TableName:='用户功能表';
  YHGNB_T.Open;

  YHB_Q:=TADOQuery.Create(nil);
  YHB_Q.Connection:=Connect;
  
  ZGNB_Q:=TADOQuery.Create(nil);
  ZGNB_Q.Connection:=Connect;

  CZRZ:='----------'+timetostr(time)+'   用户组管理:' ;
  CZRZ_F.CZRZ_FM.Lines.Add(CZRZ);
  WriteCZRZ;

  clickDBG;
end;
//***********************************************************************************
procedure TYHZGL_F.YHZ_DGMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  ClickDBG;
end;
//***********************************************************************************
procedure TYHZGL_F.TJ_FRBtnClick(Sender: TObject);   //选中添加
begin
  ZBH_FE.Text:='';
  ZBH_FE.Enabled:=true;
  ZMC_FE.Text:='';
end;
//***********************************************************************************
procedure TYHZGL_F.XG_FRBtnClick(Sender: TObject);   //选中修改
begin
  ZBH_FE.Text:=YHZ_DG.DataSource.DataSet.FieldValues['组号'];
  ZBH_FE.Enabled:=false;
  ZMC_FE.Text:=YHZ_DG.DataSource.DataSet.FieldValues['组名'];
end;
//***********************************************************************************
procedure TYHZGL_F.FlatButton1Click(Sender: TObject);
begin
  close;
end;
//******************************************************************************
procedure TYHZGL_F.TJ_FBClick(Sender: TObject);
{var
   p:TPoint;  }
begin
 { if ZH1=''then
    begin
      MessageBox(handle,'请先在左面选择组号','请选择组号',MB_OK or MB_ICONERROR);
      exit;
    end
  else
   begin
   P.x := TJ_FB.Left+TJ_FB.Width;
   P.y := TJ_FB.Top;
   ZGNB_F.Top := FlatGroupBox1.ClientToScreen(P).y;
   ZGNB_F.Left := FlatGroupBox1.ClientToScreen(P).x;
   ZGNB_F.ShowModal;
   end;  }
end;
//******************************************************************************
procedure TYHZGL_F.FlatButton2Click(Sender: TObject);
{var
  Del_Flag:integer;
  GNB_T,YHZB_T:TADOTable;
  GNB_Q:TADOQuery;   }
begin
  {if ZH1=''then
    begin
      MessageBox(handle,'请先在左面选择组号','请选择组号',MB_OK or MB_ICONERROR);
      exit;
   end
  else begin
    YHZB_T:=TADOTable.Create(nil);
    YHZB_T.Connection:=Connect;
    YHZB_T.TableName:='用户组表';
    YHZB_T.Open;

    GNB_T:=TADOTable.Create(nil);
    GNB_T.Connection:=Connect;
    GNB_T.TableName:='功能表';
    GNB_T.Open;

    GNB_Q:=TADOQuery.Create(nil);
    GNB_Q.Connection:=Connect;

    GNB_T.Locate('功能名',QX_DG1.Fields[0].AsString,[]);
    GNB_Q.SQL.Add('select * from 组功能表 where 功能号=:功能号 and 组号=:组号' );
    GNB_Q.Parameters.ParamByName('功能号').Value:=GNB_T.FieldValues['功能号'];
    GNB_Q.Parameters.ParamByName('组号').Value:=ZH1;
    GNB_Q.Open;

    if GNB_Q.RecordCount>0 then
      begin
        Del_Flag:=MessageBox(handle,'警告:删除是永久的不可恢复的!确认删除吗?','删除确认',MB_OKCANCEL or MB_ICONWarning);
        if Del_Flag=IDCancel then exit;

        YHB_Q.Close;
        YHB_Q.SQL.Clear;
        YHB_Q.SQL.Add('Select * from 用户表 where 组号='+quotedstr(ZH1));
        YHB_Q.Open;
        YHB_Q.First;

        if YHB_Q.RecordCount>0 then
          while not YHB_Q.Eof do
            begin
             if YHGNB_T.Locate('帐号;功能号',vararrayof([YHB_Q.FieldValues['帐号'],GNB_T.FieldValues['功能号']]),[]) then
               YHGNB_T.Delete;
             YHB_Q.Next;
            end;

        YHZB_T.Locate('组号',ZH1,[]);
        CZRZ:='          '+YHZB_T.FieldByName('组名').AsString+'组删除'+GNB_T.FieldByName('功能名').AsString+'权限    '+timetostr(time);
        CZRZ_F.CZRZ_FM.Lines.Add(CZRZ);
        WriteCZRZ;

        GNB_Q.Delete;
        ZGNB_Q.Requery;
      end
    else
        MessageBox(handle,'没有要删除的权限','没有要删除的权限',MB_OK or MB_ICONERROR);
  end;
  //FreeAndNil(GNB_T);
 // FreeAndNil(GNB_Q);  }
end;
//******************************************************************************
procedure TYHZGL_F.LHZGL_FBtnClick(Sender: TObject);
begin
 if (ZBH_FE.Text='') or (ZMC_FE.Text='') then
   begin
      MessageBox(handle,'请先填写组号和组名','请填写组号和组名',MB_OK or MB_ICONERROR);
      exit;
   end
 else
   begin
     if not YHZ_T.Locate('组号',ZBH_FE.Text,[]) then
       begin
         YHZ_T.Append;
         YHZ_T.FieldByName('组号').AsString:=ZBH_FE.Text;
         YHZ_T.FieldByName('组名').AsString:=ZMC_FE.Text;
         YHZ_T.Post;
         YHZ_T.Requery;

         CZRZ:='          '+ZMC_FE.Text+'组添加成功    '+timetostr(time);
         CZRZ_F.CZRZ_FM.Lines.Add(CZRZ);
         WriteCZRZ;

         ZBH_FE.Text:='';
         ZMC_FE.Text:='';
        end
      else
        begin
          ZBH_FE.Text:='';
          ZBH_FE.SetFocus;
          showmessage('此组号已经存在,请重新输入');
        end;
     end;
end;
//******************************************************************************
procedure TYHZGL_F.N1Click(Sender: TObject);
var
  YHB_Q:TADOQuery;
  ZM,msql:string;
begin
  ZM:=YHZ_DG.Fields[1].AsString;
  if  MessageDlg('警告:删除是永久的不可恢复的!'+chr(13)+'而且'+ZM+'组帐户全部删除'+chr(13)+'确认删除吗?',mtconfirmation,[mbyes,mbno],0)=mrno then  exit;
  try
    ADOCon.BeginTrans;
    YHB_Q:=TADOQuery.Create(nil);
    YHB_Q.Connection:=Connect;
    YHB_Q.SQL.Add('Select * from 用户表 where 组号=:组号');
    YHB_Q.Parameters.ParamByName('组号').Value:=YHZ_DG.Fields[0].AsString;
    YHB_Q.Open;
    YHB_Q.First;
    if  YHB_Q.RecordCount> 0 then
      while not YHB_Q.Eof do
        begin
          msql:='delete * from 用户功能表 where 帐号='+QuotedStr(YHB_Q.FieldValues['帐号']);
          ADOCon.Execute(msql);
          YHB_Q.Next;
        end;

    msql:='delete * from 用户表 where 组号='+QuotedStr(YHZ_DG.Fields[0].AsString);
    ADOCon.Execute(msql);

    msql:='delete * from 组功能表 where 组号='+QuotedStr(YHZ_DG.Fields[0].AsString);
    ADOCon.Execute(msql);

    {msql:='delete * from 用户组表 where 组号='+QuotedStr(YHZ_DG.Fields[0].AsString);
    ADOCon.Execute(msql);   }

    ADOCon.CommitTrans;

    YHZ_DG.DataSource.DataSet.Delete;
    MessageBox(handle,'记录已成功删除!','删除成功',MB_OK or MB_ICONINFORMATION);

    CZRZ:='          '+ZM+'组删除成功    '+timetostr(time);
    CZRZ_F.CZRZ_FM.Lines.Add(CZRZ);
    WriteCZRZ;

    ZBH_FE.Text:='';
    ZBH_FE.Enabled:=true;
    ZMC_FE.Text:='';
  except
    showmessage('删除出错!');
    ADOCon.RollbackTrans;
  end;
  //FreeAndNil(ZGNB_Q);
end;
//******************************************************************************
procedure TYHZGL_F.N2Click(Sender: TObject);
var
   p:TPoint;
begin
  if ZH1=''then
    begin
      MessageBox(handle,'请先在左面选择组号','请选择组号',MB_OK or MB_ICONERROR);
      exit;
    end
  else
   begin
   P.x := QX_DG1.Left+QX_DG1.Width;
   P.y := QX_DG1.Top;
   ZGNB_F.Top := FlatGroupBox1.ClientToScreen(P).y;
   ZGNB_F.Left := FlatGroupBox1.ClientToScreen(P).x;
   ZGNB_F.ShowModal;
   end;
end;
//******************************************************************************
procedure TYHZGL_F.N3Click(Sender: TObject);
var
  Del_Flag:integer;
  GNB_T,YHZB_T:TADOTable;
  GNB_Q:TADOQuery;
begin
  if ZH1=''then
    begin
      MessageBox(handle,'请先在左面选择组号','请选择组号',MB_OK or MB_ICONERROR);
      exit;
   end
  else begin
    YHZB_T:=TADOTable.Create(nil);
    YHZB_T.Connection:=Connect;
    YHZB_T.TableName:='用户组表';
    YHZB_T.Open;

    GNB_T:=TADOTable.Create(nil);
    GNB_T.Connection:=Connect;
    GNB_T.TableName:='功能表';
    GNB_T.Open;

    GNB_Q:=TADOQuery.Create(nil);
    GNB_Q.Connection:=Connect;

    GNB_T.Locate('功能名',QX_DG1.Fields[0].AsString,[]);
    GNB_Q.SQL.Add('select * from 组功能表 where 功能号=:功能号 and 组号=:组号' );
    GNB_Q.Parameters.ParamByName('功能号').Value:=GNB_T.FieldValues['功能号'];
    GNB_Q.Parameters.ParamByName('组号').Value:=ZH1;
    GNB_Q.Open;

    if GNB_Q.RecordCount>0 then
      begin
        Del_Flag:=MessageBox(handle,'警告:删除是永久的不可恢复的!确认删除吗?','删除确认',MB_OKCANCEL or MB_ICONWarning);
        if Del_Flag=IDCancel then exit;

        YHB_Q.Close;
        YHB_Q.SQL.Clear;
        YHB_Q.SQL.Add('Select * from 用户表 where 组号='+quotedstr(ZH1));
        YHB_Q.Open;
        YHB_Q.First;

        if YHB_Q.RecordCount>0 then
          while not YHB_Q.Eof do
            begin
             if YHGNB_T.Locate('帐号;功能号',vararrayof([YHB_Q.FieldValues['帐号'],GNB_T.FieldValues['功能号']]),[]) then
               YHGNB_T.Delete;
             YHB_Q.Next;
            end;

        YHZB_T.Locate('组号',ZH1,[]);
        CZRZ:='          '+YHZB_T.FieldByName('组名').AsString+'组删除'+GNB_T.FieldByName('功能名').AsString+'权限    '+timetostr(time);
        CZRZ_F.CZRZ_FM.Lines.Add(CZRZ);
        WriteCZRZ;

        GNB_Q.Delete;
        ZGNB_Q.Requery;
      end
    else
        MessageBox(handle,'没有要删除的权限','没有要删除的权限',MB_OK or MB_ICONERROR);
  end;
  //FreeAndNil(GNB_T);
 // FreeAndNil(GNB_Q);
end;
//******************************************************************************
procedure TYHZGL_F.QX_DG1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  num:=self.HelpContext;
  F1_Help(key);
end;
//******************************************************************************
end.

⌨️ 快捷键说明

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