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

📄 uadmin.pas

📁 这是一个门禁系统的应用程序,用 delphi编写,希望与大家交流.
💻 PAS
字号:
unit uAdmin;

interface

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

type
  TfrmAdmin = class(TForm)
    lbladmin: TLabel;
    lbluid: TLabel;
    lblpwd: TLabel;
    lblsys: TLabel;
    lbldes: TLabel;
    deUid: TDBEdit;
    dePwd: TDBEdit;
    deDes: TDBEdit;
    dbSys: TDBComboBox;
    btnEdit: TButton;
    btnAdd: TButton;
    btnDel: TButton;
    btnTrs: TButton;
    btnClose: TButton;
    dgAdmin: TDBGridEh;
    dsadmin: TDataSource;
    aqAdmin: TADOQuery;
    aqAdminuid: TWideStringField;
    aqAdminpwd: TWideStringField;
    aqAdminsys: TBooleanField;
    aqAdmindes: TWideStringField;
    procedure btnEditClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnTrsClick(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);
  private
    { Private declarations }
    procedure SetState(aState: Boolean = true);
  public
    { Public declarations }
  end;

var
  frmAdmin: TfrmAdmin;

implementation

uses udata;

var
  aqCheck: TADOQuery;

{$R *.dfm}

procedure TfrmAdmin.FormCreate(Sender: TObject);
begin
  SetState(true);
  dmPer.OpenQuery(aqAdmin, 'select * from admin');
  aqCheck := TADOQuery.Create(self);
end;

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

procedure TfrmAdmin.btnEditClick(Sender: TObject);
var
  dState: Boolean;
begin
  dState := false;
  if btnEdit.Caption = '编  辑' then
  begin
    aqAdmin.Edit;
    SetState(false);
    dmPer.OpenQuery(aqCheck, 'select count(id) as acount from admin');
    if aqCheck.FieldByName('acount').AsInteger = 1 then
    begin
      dbSys.ReadOnly := true;
      dbSys.Color := clSkyBlue;
    end;
  end
  else
  begin
    if deUid.Text = '' then
    begin
      MessageBox(self.Handle, '请输入账号!', '提示', mb_IconInformation + mb_Ok);
      deUid.SetFocus;
      Abort;
    end;
    if aqAdmin.State = dsInsert then
    begin
      dmPer.OpenQuery(aqCheck, 'select uid from admin where uid=' + QuotedStr(deUid.Text));
      if not aqCheck.Eof then
      begin
        MessageBox(self.Handle, '此账号已存在,请另输入!', '提示', mb_IconInformation + mb_Ok);
        deUid.SetFocus;
        Abort;
      end;
    end;
    try
      if aqAdmin.State = dsInsert then
        dState := true;
      aqAdmin.Post;
      aqAdmin.UpdateBatch();
      if dState = true then
      begin
        aqAdmin.Requery();
        aqAdmin.Last;
      end;
      SetState(true);
    except
      MessageBox(self.Handle, '账号更新失败!', '提示', mb_IconInformation + mb_Ok);
      Exit;
    end;
  end;
end;

procedure TfrmAdmin.btnAddClick(Sender: TObject);
begin
  if btnadd.Caption = '添  加' then
  begin
    aqadmin.Append;
    SetState(false);
  end
  else
  begin
    aqAdmin.Cancel;
    SetState(true);
  end;
end;

procedure TfrmAdmin.btnDelClick(Sender: TObject);
begin
  dmPer.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
      aqAdmin.Delete;
      aqAdmin.UpdateBatch();
      aqCheck.Requery();
      if aqCheck.FieldByName('acount').AsInteger = 1 then
        dmPer.ExecQuery(aqCheck, 'update admin set sys=true');
      aqAdmin.Requery();
    end;
  end
  else
  begin
    MessageBox(self.Handle, '只有一个帐号,不能删除!', '提示', mb_IconInformation + mb_Ok);
    dmPer.ExecQuery(aqCheck, 'update admin set sys=true');
    aqAdmin.Requery();
  end;
end;

procedure TfrmAdmin.btnTrsClick(Sender: TObject);
begin
  if btntrs.Caption = '半透明' then
  begin
    btntrs.Caption := '还  原';
    self.AlphaBlend := true;
    self.AlphaBlendValue := 125;
  end
  else
  begin
    btntrs.Caption := '半透明';
    self.AlphaBlend := false;
  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
  if Text = '是' then
    Sender.AsBoolean := true
  else
    Sender.AsBoolean := false;
end;

end.

⌨️ 快捷键说明

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