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

📄 wnaddusers.pas

📁 个人写的一个操作员管理部分
💻 PAS
字号:
unit WnAddUsers;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Db, Grids, DBGrids,DbTables,Bde;

type
  TFmAddUsers = class(TForm)
    gbInput: TGroupBox;
    gbDisplay: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    edCode: TEdit;
    edName: TEdit;
    edPassword: TEdit;
    combIsMgr: TComboBox;
    dbgUserInfo: TDBGrid;
    dsUsers: TDataSource;
    btnSave: TBitBtn;
    btnCancel: TBitBtn;
    btnClose: TBitBtn;
    btnDel: TBitBtn;
    btnAdd: TBitBtn;
    btnModi: TBitBtn;
    procedure FormShow(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure btnModiClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure dsUsersDataChange(Sender: TObject; Field: TField);
    procedure btnCloseClick(Sender: TObject);
    procedure edCodeExit(Sender: TObject);
  private
    procedure ClearData;
    procedure DisEnableButton;
    procedure ShowRecord;
    function SaveData : Boolean;
    { Private declarations }
  public
    CurrentCenterCode : string;
    { Public declarations }
  end;

var
  FmAddUsers: TFmAddUsers;

implementation
  uses DnUserManager,UnDlgShell;
{$R *.DFM}
function TFmAddUsers.SaveData : Boolean;
var cnt : Integer;
begin
  if edCode.Text = '' then
  begin
    ShowError('请输入操作员代码');
    edCode.SetFocus;
    result := False;
    Exit;
  end;
  if edName.Text = '' then
  begin
    ShowError('请输入操作员姓名');
    edName.SetFocus;
    result := False;
    Exit;
  end;
  if combIsMgr.Text = '' then
  begin
    ShowError('请选择是否系统管理员');
    combIsMgr.SetFocus;
    result := False;
    Exit;
  end;
  with dmUserManager.qryUsers do
  begin
    try
      if edCode.ReadOnly then
      begin
        Locate('userno',edCode.Text,[]);
        Edit;
      end else
      begin
        Append;
      end;
      if not edCode.ReadOnly then
        FieldByName('userno').AsString := edCode.Text;
      FieldByName('username').AsString := edName.Text;
      FieldByName('password').AsString := edPassword.Text;
      FieldByName('IsMgr').AsString := IntToStr(combIsMgr.ItemIndex);
      FieldByName('password').AsString := edPassword.Text;
      FieldByName('password').AsString := edPassword.Text;
      FieldByName('password').AsString := edPassword.Text;
      Post;
      result := True;
      DisEnableButton;
      gbInput.Enabled := False;
      edCode.ReadOnly := False;
      btnAdd.SetFocus;
    except
      on E : EDbEngineError do
         begin
           dmUserManager.qryUsers.Cancel;
           for cnt := 0  to E.ErrorCount - 1 do
           begin
             if E.Errors[cnt].ErrorCode = dbierr_keyviol then
             begin
               ShowError('输入的操作员代码已经在数据库中');
               edCode.SetFocus;
               result := False;
               Exit;
             end;
           end;

         end;
      else begin
        ShowError('数据库出错导致删除操作员不成功');
        result := False;
      end;
    end;

  end;
end;
procedure TFmAddUsers.FormShow(Sender: TObject);
begin
  dmUserManager.qryUsers.Open;
end;

procedure TFmAddUsers.ClearData;
begin
  edCode.Clear;
  edName.Clear;
  edPassword.Clear;
  combIsMgr.ItemIndex := 0;
end;

procedure TFmAddUsers.DisEnableButton;
begin
  btnAdd.Enabled := not btnAdd.Enabled;
  btnModi.Enabled := not btnModi.Enabled;
  btndel.Enabled := not btnDel.Enabled;
  btnSave.Enabled := not btnSave.Enabled;
  btnCancel.Enabled := not btnCancel.Enabled;
end;

procedure TFmAddUsers.btnAddClick(Sender: TObject);
begin
  DisEnableButton;
  gbInput.Enabled := True;
  ClearData;
  edCode.SetFocus;
end;

procedure TFmAddUsers.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #27 then
    btnClose.Click;
  if key = #13 then
  begin
    SelectNext((ActiveControl as TWinControl),True,True);
    Key := #0;
  end;
end;

procedure TFmAddUsers.btnModiClick(Sender: TObject);
begin
  DisEnableButton;
  gbInput.Enabled := True;
  edCode.ReadOnly := True;
  edName.SetFocus;
end;

procedure TFmAddUsers.btnDelClick(Sender: TObject);
begin
  if dmUserManager.qryUsers.IsEmpty then
  begin
    ShowError('没有可以删除的操作员');
    Exit;
  end;
  if Ask('是否真的要删除操作员:'+dmUserManager.qryUsers.FieldByName('username').AsString) then
  begin
    with dmUserManager do
    begin
      UserManager.StartTransaction;
      try
        DelUserPosts.Prepare;
        DelUserPosts.ParamByName('userno').AsString := qryUsers.FieldByName('userno').AsString;
        DelUserPosts.ExecSQL;
        qryUsers.Delete;
        UserManager.Commit;
        ClearData;
        if not qryUsers.IsEmpty then
          ShowRecord;
        dmUserManager.qryUserPost.Close;
        dmUserManager.qryUserPost.Open;
      except
        UserManager.Rollback;
        ShowError('数据库出错导致删除操作员不成功');
      end;
    end;
  end;
end;


procedure TFmAddUsers.ShowRecord;
begin
  with dmUserManager do
  begin
    edCode.Text := qryUsers.FieldByName('userno').AsString;
    edName.Text := qryUsers.FieldByName('username').AsString;
    edPassword.Text := qryUsers.FieldByName('password').AsString;
    combIsMgr.ItemIndex := StrToInt(qryUsers.FieldByName('ismgr').AsString);
  end;
end;

procedure TFmAddUsers.btnSaveClick(Sender: TObject);
begin
  SaveData;
end;

procedure TFmAddUsers.btnCancelClick(Sender: TObject);
begin
  if Ask('请确认是否取消当前操作') then
  begin
    ClearData;
    ShowRecord;
    gbInput.Enabled := False;
    edCode.ReadOnly := False;
    DisEnableButton;
    btnAdd.SetFocus;
  end;
end;

procedure TFmAddUsers.dsUsersDataChange(Sender: TObject; Field: TField);
begin
  if dsUsers.State in [dsedit,dsinsert] then
    exit;
  if dmUserManager.qryUsers.IsEmpty then
    Exit;
  if btnSave.Enabled then
    Exit;
  ShowRecord;
end;

procedure TFmAddUsers.btnCloseClick(Sender: TObject);
begin
  if btnSave.Enabled then
    if Ask('数据没有保存,是否保存数据') then
    begin
      if SaveData = True then
        Close
      else
        Exit;
    end;
  Close;
end;

procedure TFmAddUsers.edCodeExit(Sender: TObject);
begin
  if (ActiveControl = btnCancel) or (ActiveControl = btnClose) then
     Exit;
  if not edCode.ReadOnly then
    if edCode.Modified then
      if dmUserManager.qryUsers.Locate('userno',edCode.Text,[]) then
      begin
        ShowError('输入的操作员代码已经在数据库中,请重新输入');
        edCode.SetFocus;
      end;

end;

end.

⌨️ 快捷键说明

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