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

📄 formusermanage.pas

📁 Delphi数据库编程
💻 PAS
字号:
unit FormUserManage;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids, DBCtrls, ExtCtrls, Mask;

type
  TfrmUserManage = class(TForm)
    dbgUsers: TDBGrid;
    dsUsers: TDataSource;
    tblUsers: TTable;
    dbnUsers: TDBNavigator;
    btnQuit: TButton;
    GroupBox1: TGroupBox;
    dbeUserID: TDBEdit;
    dbePasswd: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    dbeUserName: TDBEdit;
    Label5: TLabel;
    Label6: TLabel;
    dbmDesc: TDBMemo;
    edtPasswd: TEdit;
    procedure FormShow(Sender: TObject);
    procedure btnQuitClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure tblUsersAfterScroll(DataSet: TDataSet);
    procedure dbnUsersClick(Sender: TObject; Button: TNavigateBtn);
    procedure tblUsersBeforeDelete(DataSet: TDataSet);
    procedure tblUsersBeforePost(DataSet: TDataSet);
  private
    procedure ToggleMode;
  public
    { Public declarations }
  end;

var
  frmUserManage: TfrmUserManage;

implementation

{$R *.dfm}

procedure TfrmUserManage.FormShow(Sender: TObject);
begin
  tblUsers.Active := true;
  ToggleMode;
end;

procedure TfrmUserManage.btnQuitClick(Sender: TObject);
begin
  close;
end;

procedure TfrmUserManage.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  tblUsers.Active := false;
end;

procedure TfrmUserManage.tblUsersAfterScroll(DataSet: TDataSet);
begin
  ToggleMode;
end;

procedure TfrmUserManage.dbnUsersClick(Sender: TObject;
  Button: TNavigateBtn);
begin
  ToggleMode;
end;

procedure TfrmUserManage.ToggleMode;
  procedure EnableInput(Enabled: Boolean);
  begin
    dbgUsers.Enabled := not Enabled;
    dbeUserID.Enabled := Enabled;
    dbePasswd.Enabled := Enabled;
    edtPasswd.Enabled := Enabled;
    dbeUserName.Enabled := Enabled;
    dbmDesc.Enabled := Enabled;
  end;
begin
  case tblUsers.State of
    dsInsert, dsEdit:
      begin
        EnableInput(true);
        dbnUsers.VisibleButtons := [nbPost, nbCancel];
        dbeUserID.SetFocus;
      end;
  else
    EnableInput(false);
    dbnUsers.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast,
      nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh];
  end;
end;

procedure TfrmUserManage.tblUsersBeforeDelete(DataSet: TDataSet);
var
  strMsg: string;
begin
  strMsg := Format('确定要删除用户"%s(%s)"吗?', [tblUsers['UsersID'], tblUsers['UsersName']]);
  if MessageDlg(strMsg, mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
    Abort;
end;

procedure TfrmUserManage.tblUsersBeforePost(DataSet: TDataSet);
  procedure CheckField(FieldName, FieldDesc: string; dbText: TCustomEdit; NotEmpty: Boolean);
  begin
    dbText.Text := Trim(dbText.Text);
    dbText.Text := StringReplace(dbText.Text, '''', '', [rfReplaceAll]);
    dbText.Text := StringReplace(dbText.Text, ' ', '', [rfReplaceAll]);
    if NotEmpty and (dbText.Text = '') then
    begin
      ShowMessageFmt('“%s”不能为空,请输入足够的信息!', [FieldDesc]);
      dbText.SetFocus;
      Abort;
    end
    else
      tblUsers.FieldByName(FieldName).AsString := dbText.Text;
  end;
begin
  CheckField('UserID', '用户名', dbeUserID, true);
  CheckField('Passwd', '密码', dbePasswd, true);
  edtPasswd.Text := Trim(edtPasswd.Text);
  edtPasswd.Text := StringReplace(edtPasswd.Text, '''', '', [rfReplaceAll]);
  edtPasswd.Text := StringReplace(edtPasswd.Text, ' ', '', [rfReplaceAll]);
  if edtPasswd.Text <> dbePasswd.Text then
  begin
    ShowMessage('两次输入的密码不相同,请重新输入!');
    dbePasswd.SetFocus;
    Abort;
  end;
  CheckField('UserName', '用户姓名', dbeUserName, true);
  CheckField('Description', '说明', dbmDesc, false);
  Abort;
end;

end.

⌨️ 快捷键说明

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