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

📄 qxgl_form.pas

📁 一个小的Delphi的权限控制工具
💻 PAS
字号:
unit QXGL_Form;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TFlatEditUnit, TFlatRadioButtonUnit, TFlatButtonUnit,
  Grids, DBGrids, TFlatGroupBoxUnit, ExtCtrls, TFlatComboBoxUnit,DB,ADODB,
  ComCtrls;

type
  TQXGL_F = class(TForm)
    QX_DS: TDataSource;
    YHGL_PC: TPageControl;
    ZHGL_TS: TTabSheet;
    FlatButton1: TFlatButton;
    QXZX_FBtn: TFlatButton;
    FlatGroupBox8: TFlatGroupBox;
    Label18: TLabel;
    Label19: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    QXBH_FE: TFlatEdit;
    QXXM_FE: TFlatEdit;
    ZM_FCB: TFlatComboBox;
    XMM_FE: TFlatEdit;
    QR_FE: TFlatEdit;
    FlatGroupBox7: TFlatGroupBox;
    QXXG_FRBtn: TFlatRadioButton;
    QXTJ_FRBtn: TFlatRadioButton;
    FlatGroupBox5: TFlatGroupBox;
    QX_DG: TDBGrid;
    QXDel_FBtn: TFlatButton;
    QXGL_TS: TTabSheet;
    FlatGroupBox1: TFlatGroupBox;
    ZH_FE: TFlatEdit;
    CZ_FB: TFlatButton;
    FlatGroupBox2: TFlatGroupBox;
    QX_DG1: TDBGrid;
    FlatButton2: TFlatButton;
    QX_DS1: TDataSource;
    TJ_FB: TFlatButton;
    Edit1: TEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure QXDel_FBtnClick(Sender: TObject);
    procedure QXTJ_FRBtnClick(Sender: TObject);
    procedure QXXG_FRBtnClick(Sender: TObject);
    procedure QXZX_FBtnClick(Sender: TObject);
    procedure CZ_FBClick(Sender: TObject);
    procedure FlatButton1Click(Sender: TObject);
    procedure FlatButton2Click(Sender: TObject);
    procedure TJ_FBClick(Sender: TObject);
    procedure ZH_FEKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure QR_FEKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure QX_DGMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  QXGL_F: TQXGL_F;

implementation

uses share, GNB_Form;

{$R *.dfm}

var
  YHB_T:TADOTable;          //用户表
  YHGNB_T:TADOTable;        // 用户功能表
  YHZ_T:TADOTable;          //用户组表
  QXGL_Q:TADOQuery;         //

procedure TQXGL_F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;
//***********************************************************************************
procedure TQXGL_F.FormDestroy(Sender: TObject);
begin
  FreeAndNil(YHB_T);
  FreeAndNil(YHGNB_T);
  FreeAndNil(YHZ_T);
  FreeAndNil(QXGL_Q);
  QXGL_F:=nil;
end;
//***********************************************************************************
procedure TQXGL_F.Button1Click(Sender: TObject);
begin
  close;
end;
//***********************************************************************************
procedure TQXGL_F.FormCreate(Sender: TObject);
begin
  YHB_T:=TADOTable.Create(nil);
  YHB_T.Connection:=Connect;
  YHB_T.TableName:='用户表';
  YHB_T.Open;

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

  YHZ_T:=TADOTable.Create(nil);
  YHZ_T.Connection:=Connect;
  YHZ_T.TableName:='用户组表';
  YHZ_T.Open;

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

  QXGL_Q1:=TADOQuery.Create(nil);
  QXGL_Q1.Connection:=Connect;
  
end;
//***********************************************************************************
procedure TQXGL_F.FormShow(Sender: TObject);
begin
  QXGL_Q.Close;
  QXGL_Q.SQL.Clear;
  QXGL_Q.SQL.Add('Select 帐号,姓名,组名 From 用户表 A,用户组表 B Where A.组号=B.组号');
  QX_DS.DataSet:=QXGL_Q;
  QX_DG.Columns[0].FieldName:='帐号';
  QX_DG.Columns[1].FieldName:='姓名';
  QX_DG.Columns[2].FieldName:='组名';
  QXGL_Q.Open;

  while not YHZ_T.Eof do
    begin
      ZM_FCB.Items.Add(YHZ_T.FieldValues['组名']);
      YHZ_T.Next;
    end;
  ZM_FCB.ItemIndex:=0;
  QXXG_FRBtn.Checked:=True;
end;
//***********************************************************************************
procedure TQXGL_F.QXDel_FBtnClick(Sender: TObject);
var
  Flag:integer;
  YHGNB_Q:TADOQuery;
begin
  Flag:=MessageBox(handle,'警告:删除是永久的不可恢复的!确认删除吗?','确认删除',MB_OKCANCEL or MB_ICONWarning);
  if flag=IDCANCEL then exit;

  YHGNB_Q:=TADOQuery.Create(nil);
  YHGNB_Q.Connection:=Connect;
  {YHGNB_Q.SQL.Add('delect * from 用户功能表 where 帐号=:帐号');
  YHGNB_Q.Parameters.ParamByName('帐号').Value:=QX_DG.Fields[0].AsString;
  YHGNB_Q.ExecSQL;}

  YHGNB_Q.Close;
  YHGNB_Q.SQL.Clear;
  YHGNB_Q.SQL.Add('select * from 用户功能表 where 帐号=:帐号');
  YHGNB_Q.Parameters.ParamByName('帐号').Value:=QX_DG.Fields[0].AsString;
  YHGNB_Q.Open;
  while not YHGNB_Q.Eof do  YHGNB_Q.Delete;

  YHB_T.Locate('帐号',QX_DG.Fields[0].AsString,[]);
  YHB_T.Delete;
  QXGL_Q.Requery;

  //FreeAndNil(YHGNB_Q);
end;
//***********************************************************************************
procedure TQXGL_F.QXTJ_FRBtnClick(Sender: TObject);       //选中添加
begin
  QXBH_FE.Text:='';
  QXBH_FE.Enabled:=true;
  QXXM_FE.Text:='';
  ZM_FCB.ItemIndex:=0;
  QXXM_FE.Enabled:=true;
  XMM_FE.Text:='';
  QR_FE.Text:='';
end;
//***********************************************************************************
procedure TQXGL_F.QXXG_FRBtnClick(Sender: TObject);
begin
  QXXG_FRBtn.Checked:=true;
  QXBH_FE.Text:=QX_DG.Fields[0].AsString;
  QXBH_FE.Enabled:=False;
  QXXM_FE.Enabled:=false;
  QXXM_FE.Text:=QX_DG.Fields[1].AsString;
  ZM_FCB.ItemIndex:=ZM_FCB.Items.IndexOf(QX_DG.Fields[2].AsString);
end;
//***********************************************************************************
procedure TQXGL_F.QXZX_FBtnClick(Sender: TObject);     //执行操作
var
  YHB_Q:TADOQuery;
  ZGNB_Q:TADOQuery;
  YHGNB_Q:TADOQuery;
begin
  ZGNB_Q:=TADOQuery.Create(nil);
  ZGNB_Q.Connection:=Connect;
  if QXXG_FRBtn.Checked then
    begin
      YHB_T.Locate('帐号',QXBH_FE.Text,[]);
      YHZ_T.Close;
      YHZ_T.Open;
      YHZ_T.Locate('组名',ZM_FCB.text,[]);
      YHB_T.Edit;
      YHB_T.FieldByName('组号').AsString:=YHZ_T.FieldValues['组号'];

      YHGNB_Q:=TADOQuery.Create(nil);
      YHGNB_Q.Connection:=Connect;
      YHGNB_Q.Close;
      YHGNB_Q.SQL.Clear;
      YHGNB_Q.SQL.Add('select * from 用户功能表 where 帐号=:帐号');
      YHGNB_Q.Parameters.ParamByName('帐号').Value:=QXBH_FE.Text;
      YHGNB_Q.Open;
      while not YHGNB_Q.Eof do  YHGNB_Q.Delete;

      ZGNB_Q.Close;
      ZGNB_Q.SQL.Clear;
      ZGNB_Q.SQL.Add('select 功能号 from 组功能表');
      ZGNB_Q.SQL.Add('where 组号=:组号');
      ZGNB_Q.Parameters.ParamByName('组号').Value:=YHZ_T.FieldValues['组号'];
      ZGNB_Q.Open;
      if  ZGNB_Q.RecordCount>0 then
        while not ZGNB_Q.Eof do
           begin
             YHGNB_T.Append;
             YHGNB_T.FieldByName('帐号').AsString:=QXBH_FE.Text;
             YHGNB_T.FieldByName('功能号').AsString:=ZGNB_Q.FieldValues['功能号'];
             YHGNB_T.Post;
             ZGNB_Q.Next;
           end;

      if XMM_FE.Text<>'' then
        if XMM_FE.Text=QR_FE.Text then
           begin
              YHB_T.FieldByName('密码').AsString:=QR_FE.Text;
              YHB_T.Post;
              YHB_T.Requery;
              MessageBox(handle,'记录修改成功!','成功',MB_OK or MB_ICONINFORMATION);
           end
        else begin
             MessageBox(handle,'两次输入的新密码不一致!','错误',MB_OK or MB_ICONERROR);
             YHB_T.Cancel;
             exit;
           end
      else
        begin
          YHB_T.Requery;
          MessageBox(handle,'记录修改成功!','成功',MB_OK or MB_ICONINFORMATION);
        end;
      XMM_FE.Text:='';
      QR_FE.Text:='';
    end
  else begin
      YHB_Q:=TADOQuery.Create(nil);
      YHB_Q.Connection:=Connect;
      YHB_Q.Close;
      YHB_Q.SQL.Clear;
      YHB_Q.SQL.Add('Select * From 用户表 Where 帐号=:帐号');
      YHB_Q.Parameters.ParamByName('帐号').Value:=QXBH_FE.Text;
      YHB_Q.Open;

      if YHB_Q.RecordCount >0 then
        begin
          MessageBox(handle,'此编号已经存在了,请换个编号!','错误',MB_OK or MB_ICONERROR);
          exit;
        end;

      YHZ_T.Close;
      YHZ_T.Open;
      YHZ_T.Locate('组名',ZM_FCB.Text,[]);

      YHB_T.Append;
      YHB_T.FieldByName('帐号').AsString:=QXBH_FE.Text;
      YHB_T.FieldByName('姓名').AsString:=QXXM_FE.Text;
      YHB_T.FieldByName('组号').AsString:=YHZ_T.FieldValues['组号'];

      if XMM_FE.Text=QR_FE.Text then YHB_T.FieldByName('密码').AsString:=QR_FE.Text
      else begin
        MessageBox(handle,'两次输入的新密码不一致!','错误',MB_OK or MB_ICONERROR);
        YHB_T.Cancel;
        exit;
      end;
      YHB_T.Post;
      YHB_T.Requery;

      //ZGNB_Q:=TADOQuery.Create(nil);
      //ZGNB_Q.Connection:=Connect;
      ZGNB_Q.SQL.Add('select 功能号 from 组功能表');
      ZGNB_Q.SQL.Add('where 组号=:组号');
      ZGNB_Q.Parameters.ParamByName('组号').Value:=YHZ_T.FieldValues['组号'];
      ZGNB_Q.Open;
      if  ZGNB_Q.RecordCount>0 then
        while not ZGNB_Q.Eof do
           begin
             YHGNB_T.Append;
             YHGNB_T.FieldByName('帐号').AsString:=QXBH_FE.Text;
             YHGNB_T.FieldByName('功能号').AsString:=ZGNB_Q.FieldValues['功能号'];
             YHGNB_T.Post;
             ZGNB_Q.Next;
           end;

      MessageBox(handle,'记录添加成功!','成功',MB_OK or MB_ICONINFORMATION);
      QXTJ_FRBtnClick(QXTJ_FRBtn);
      XMM_FE.Text:='';
      QR_FE.Text:='';
    end;
  QXGL_Q.Requery;

  //FreeAndNil(YHB_Q);
 // FreeAndNil(ZGNB_Q);
  //FreeAndNil(YHGNB_Q);
end;

procedure TQXGL_F.CZ_FBClick(Sender: TObject);
begin
  QXGL_Q1.Close;
  QXGL_Q1.SQL.Clear;
  ZH:=ZH_FE.Text;
  FlatGroupBox2.Caption:=ZH+ '用户已有权限:';
  QXGL_Q1.SQL.Add('Select 功能名,A.功能号 From 用户功能表 A,功能表 B Where 帐号=:帐号 and A.功能号=B.功能号');
  QXGL_Q1.Parameters.ParamByName('帐号').Value:=ZH_FE.Text;
  QXGL_Q1.Open;
  if  QXGL_Q1.RecordCount>0 then
    begin
      QXGL_Q1.Close;
      QX_DS1.DataSet:=QXGL_Q1;
      QX_DG1.Columns[0].FieldName:='功能名';
      QXGL_Q1.Open;
    end
  else
    MessageBox(handle,'没有此用户的信息存在!','没有此用户',MB_OK or MB_ICONERROR);
  ZH_FE.Text:='';
end;

procedure TQXGL_F.FlatButton1Click(Sender: TObject);
begin
  close;
end;

procedure TQXGL_F.FlatButton2Click(Sender: TObject);
var
  Del_Flag:integer;
  GNB_T:TADOTable;
  GNB_Q:TADOQuery;
  HSXX_Q:TADOQuery;
begin
  GNB_T:=TADOTable.Create(nil);
  GNB_T.Connection:=Connect;
  GNB_T.TableName:='功能表';
  GNB_T.Open;

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

  HSXX_Q:=TADOQuery.Create(nil);
  HSXX_Q.Connection:=Connect;
  HSXX_Q.SQL.Add('select * from 用户功能表');
  HSXX_Q.SQL.Add('where 帐号=:帐号');
  HSXX_Q.Parameters.ParamByName('帐号').Value:=ZH;
  HSXX_Q.Open;
  if HSXX_Q.RecordCount>0 then
    begin
      Del_Flag:=MessageBox(handle,'警告:删除是永久的不可恢复的!确认删除吗?','删除确认',MB_OKCANCEL or MB_ICONWarning);
      if Del_Flag=IDCancel then exit;

      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:=ZH;
      GNB_Q.Open;
      if  (GNB_Q.FieldValues['功能号']='10') or (GNB_Q.FieldValues['功能号']='20') then
         begin
            MessageBox(handle,'不能删除此功能','错误',MB_OK or MB_ICONERROR);
            exit;
         end ;
      GNB_Q.Delete;
      QXGL_Q1.Requery;
      //FreeAndNil(GNB_Q);
    end
  else
    begin
      ZH_FE.Text:='';
      MessageBox(handle,'请先指定帐号','请先指定帐号',MB_OK or MB_ICONERROR);
      exit;
     end;
  //FreeAndNil(GNB_T);
  //FreeAndNil(GNB_Q);
  //FreeAndNil(HSXX_Q);
end;

procedure TQXGL_F.TJ_FBClick(Sender: TObject);
var
   p:TPoint;
   YHZH_Q:TADOQuery;
begin
   YHZH_Q:=TADOQuery.Create(nil);
   YHZH_Q.Connection:=Connect;
   YHZH_Q.SQL.Add('select * from 用户功能表');
   YHZH_Q.SQL.Add('where 帐号=:帐号');
   YHZH_Q.Parameters.ParamByName('帐号').Value:=ZH;
   YHZH_Q.Open;
   if YHZH_Q.RecordCount>0 then
     begin
       P.x := TJ_FB.Left+TJ_FB.Width;
       P.y := TJ_FB.Top;
       GNB_F.Top := FlatGroupBox2.ClientToScreen(P).y;
       GNB_F.Left := FlatGroupBox2.ClientToScreen(P).x;
       GNB_F.Show(Edit1);
       //FreeAndNil(YHZH_Q);
     end
   else
     begin
       ZH_FE.Text:='';
       MessageBox(handle,'请先查找帐号','请先查找帐号',MB_OK or MB_ICONERROR);
       exit;
     end;

end;

procedure TQXGL_F.ZH_FEKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key=VK_RETURN then CZ_FBClick(CZ_FB);
end;

procedure TQXGL_F.QR_FEKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if Key=VK_RETURN then QXZX_FBtnClick(QXZX_FBtn);
end;

procedure TQXGL_F.QX_DGMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  QXXG_FRBtn.Checked:=true;
  QXBH_FE.Text:=QX_DG.Fields[0].AsString;
  QXBH_FE.Enabled:=False;
  QXXM_FE.Enabled:=false;
  QXXM_FE.Text:=QX_DG.Fields[1].AsString;
  ZM_FCB.ItemIndex:=ZM_FCB.Items.IndexOf(QX_DG.Fields[2].AsString);
end;

end.

⌨️ 快捷键说明

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