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

📄 uadmin.pas

📁 图书馆管理系统设计详细资料
💻 PAS
字号:
unit uAdmin;

interface

uses               
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  StdCtrls, Grids, DBGrids, DB, ADODB, DBCtrls, Mask,DBGridEh,
  uModalbase, Buttons, ExtCtrls;

type
  TfrmAdmin = class(TfrmModalBase)
    dsadmin: TDataSource;
    aqAdmin: TADOQuery;
    aqAdminuid: TWideStringField;
    aqAdminpwd: TWideStringField;
    aqAdminsys: TBooleanField;
    aqAdmindes: TWideStringField;
    Panel1: TPanel;
    dgAdmin: TDBGridEh;
    Panel2: TPanel;
    lbluid: TLabel;
    lblpwd: TLabel;
    lblsys: TLabel;
    deUid: TDBEdit;
    dePwd: TDBEdit;
    dbSys: TDBComboBox;
    lbldes: TLabel;
    deDes: TDBEdit;
    btnAdd: TBitBtn;
    btnEdit: TBitBtn;
    btnDel: TBitBtn;
    btnClose: TBitBtn;
    Panel3: TPanel;
    lbladmin: TLabel;
    procedure btnEditClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure aqAdminsysGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    procedure aqAdminsysSetText(Sender: TField; const Text: String);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    procedure SetState(ViewState: Boolean);
  public
    { Public declarations }
  end;

var
  frmAdmin: TfrmAdmin;

implementation

uses uData, uGlobal;

var
  aqCheck: TADOQuery;

{$R *.dfm}

procedure TfrmAdmin.FormCreate(Sender: TObject);
begin
  Log.Write('进入管理员信息模块');
  aqCheck := TADOQuery.Create(Self);
  SetState(True);
  DM.OpenQuery(aqAdmin, 'select * from admin');
end;

procedure TfrmAdmin.FormDestroy(Sender: TObject);
begin
  aqCheck.Free;
end;

procedure TfrmAdmin.SetState(ViewState: Boolean);
var
  sColor: TColor;
begin
  deUid.ReadOnly := ViewState;
  dePwd.ReadOnly := ViewState;
  dbSys.ReadOnly := ViewState;
  deDes.ReadOnly := ViewState;
  dgAdmin.Enabled := ViewState;
  btnDel.Visible := ViewState;
  if ViewState then
  begin
    btnEdit.Caption := '编 辑';
    btnAdd.Caption := '添 加';
    sColor := ViewColor;
  end
  else
  begin
    if aqAdmin.State = dsEdit then
      btnEdit.Caption := '确 定'
    else btnEdit.Caption := '提 交';
    btnAdd.Caption := '取 消';
    deUid.SetFocus;
    sColor := clWindow;
  end;
  deUid.Color := sColor;
  dePwd.Color := sColor;
  dbSys.Color := sColor;
  deDes.Color := sColor;
end;

procedure TfrmAdmin.btnEditClick(Sender: TObject);
begin
  if btnEdit.Caption = '编 辑' then
  begin
    aqAdmin.Edit;
    SetState(False);
    DM.OpenQuery(aqCheck, 'select count(id) as acount from admin');
    if aqCheck.FieldByName('acount').AsInteger = 1 then
    begin
      dbSys.ReadOnly := True;
      dbSys.Color := ViewColor;
    end;
  end
  else
  begin
    if deUid.Text = '' then
    begin
      MessageBox(Handle, '请输入账号!', '提示', mb_IconInformation + mb_Ok);
      deUid.SetFocus;
      Abort;
    end;
    if aqAdmin.State = dsInsert then
    begin
      DM.OpenQuery(aqCheck, 'select uid from admin where uid=' + QuotedStr(deUid.Text));
      if not aqCheck.Eof then
      begin
        MessageBox(Handle, '此账号已存在,请另输入!', '提示', mb_IconInformation + mb_Ok);
        deUid.SetFocus;
        Abort;
      end;
    end;
    try
      if aqAdmin.State = dsInsert then
        Log.Write('添加账号' + aqAdmin.FieldByName('uid').AsString)
      else
        Log.Write('更新账号' + aqAdmin.FieldByName('uid').AsString);
      aqAdmin.UpdateBatch();
      SetState(True);
    except
      MessageBox(Handle, '账号更新失败!', '提示', mb_IconInformation + mb_Ok);
    end;
  end;
end;

procedure TfrmAdmin.btnAddClick(Sender: TObject);
begin
  if btnAdd.Caption = '添 加' then
  begin
    aqadmin.Append;
    SetState(False);
  end
  else
  begin
    aqAdmin.CancelBatch();
    SetState(True);
  end;
end;

procedure TfrmAdmin.btnDelClick(Sender: TObject);
begin
  DM.OpenQuery(aqCheck, 'select count(id) as acount from admin');
  if aqCheck.FieldByName('acount').AsInteger > 1 then
  begin
    if MessageBox(handle, '真的要删除此帐号么?', '提示',  mb_IconQuestion + mb_OkCancel) = idOk then
    begin
      Log.Write('删除账号' + aqAdmin.FieldByName('uid').AsString);
      aqAdmin.Delete;
      aqAdmin.UpdateBatch();
      if aqCheck.FieldByName('acount').AsInteger = 1 then
        DM.ExecSQL('update admin set sys=True');
    end;
  end
  else
  begin
    MessageBox(Handle, '只有一个帐号,不能删除!', '提示', mb_IconInformation + mb_Ok);
    DM.ExecSQL('update admin set sys=True');
    aqAdmin.Requery();
  end;
end;

procedure TfrmAdmin.btnCloseClick(Sender: TObject);
begin
  Close();
end;

procedure TfrmAdmin.aqAdminsysGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  if Sender.AsBoolean = True then
    Text := '是'
  else Text := '否';
end;

procedure TfrmAdmin.aqAdminsysSetText(Sender: TField; const Text: String);
begin
  Sender.AsBoolean := Text = '是';
end;

end.

⌨️ 快捷键说明

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