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

📄 wnaddpost.pas

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

interface

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

type
  TCurrentAction = (caAdd,caModi,caBrowse);
  TFmAddPost = class(TForm)
    gbInput: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    edPostNo: TEdit;
    edPostName: TEdit;
    btnAdd: TBitBtn;
    btnSave: TBitBtn;
    btnClose: TBitBtn;
    procedure btnAddClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure edPostNoExit(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    CurrentAction : TCurrentAction;
    procedure AddPost;
    procedure ModiPost;
    procedure ClearData;
    procedure DisabledButton;
    function SaveData : Boolean;

    { Public declarations }
  end;

var
  FmAddPost: TFmAddPost;

implementation
  uses DnUserManager,UnDlgShell,WnUserManager;
{$R *.DFM}

{ TFmAddPost }

procedure TFmAddPost.AddPost;
begin
  CurrentAction := caAdd;
  ShowModal;
end;

procedure TFmAddPost.ClearData;
begin
  edPostName.Clear;
  edPostNo.Clear;
end;

procedure TFmAddPost.DisabledButton;
begin
  btnAdd.Enabled := not btnAdd.Enabled;
  btnSave.Enabled := not btnSave.Enabled;
end;

procedure TFmAddPost.ModiPost;
begin
  CurrentAction := caModi;
  gbInput.Enabled := True;
  edPostNo.ReadOnly := True;
  btnAdd.Enabled := False;
  btnSave.Enabled := True;
  edPostNo.Text := dmUserManager.qryPosts.FieldByName('postno').AsString;
  edPostName.Text := dmUserManager.qryPosts.FieldByname('postname').AsString;
  ShowModal;
end;

function TFmAddPost.SaveData : Boolean;
var I : Integer;
begin
  if edPostNo.Text = '' then
  begin
    ShowError('请输入岗位代码');
    edPostNo.SetFocus;
    Result := False;
    Exit;
  end;
  if edPostName.Text = '' then
  begin
    ShowError('请输入岗位名称');
    edPostName.SetFocus;
    Result := False;
    Exit;
  end;
  case CurrentAction of
    caAdd :with dmUserManager.qryPosts ,FmUserManager do
           begin
             try
               Append;
               FieldByName('postno').AsString := edPostNo.Text;
               FieldByName('postName').AsString := edPostName.Text;
               FieldByName('programid').AsInteger := StrToInt(slProgramId.Strings[combPrograms.ItemIndex]);
               Post;
               gbInput.Enabled := False;
               DisabledButton;
               btnAdd.SetFocus;
             except
               on E:EDbEngineError do
                  begin
                    dmUserManager.qryPosts.Cancel;
                    for I := 0 to E.ErrorCount - 1  do
                    begin
                      if E.Errors[I].ErrorCode = dbierr_keyviol then
                      begin
                        ShowError('输入的岗位代码已经存在数据库中,'+#13+'请重新输入岗位代码');
                        edPostNo.SetFocus;
                        Result := False;
                        Exit;
                      end;
                    end;
                  end;
               else
               begin
                 ShowError('数据库出错导致保存失败');
                 Result := False;
                 Exit;
               end;
             end;


           end;

    caModi:with dmUserManager.qryPosts do
           begin
             try
               Edit;
               FieldByName('postname').AsString := edPostName.Text;
               Post;
               Result := True;
               FmAddPost.Close;
             except
               on e:EDbEngineError do
                  begin
                    ShowError('数据库出错导致存储失败');
                    edPostName.SetFocus;
                    Result := False;
                    Exit;
                  end;
             end;
           end;
  end;
end;

procedure TFmAddPost.btnAddClick(Sender: TObject);
begin
  ClearData;
  gbInput.Enabled := True;
  edPostNo.SetFocus;
  DisabledButton;
end;

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

procedure TFmAddPost.btnCloseClick(Sender: TObject);
begin
  if btnSave.Enabled then
    if Ask('是否保存未保存的数据') then
    begin
      if SaveData then
        Close
      else
        Exit;
    end;
  Close;
end;

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

procedure TFmAddPost.FormShow(Sender: TObject);
begin
  dmUserManager.qryCheckPosts.Open;
  if CurrentAction = caModi then
    edPostName.SetFocus;
end;

procedure TFmAddPost.edPostNoExit(Sender: TObject);
begin
  if ActiveControl = btnClose then
    Exit;
  if not edPostNo.ReadOnly then
  begin
    dmUserManager.qryCheckPosts.Close;
    dmUserManager.qryCheckPosts.Open;
    dmUserManager.qryCheckPosts.First;
    if dmUserManager.qryCheckPosts.Locate('postno',edPostNo.Text,[]) then
    begin
      ShowError('输入的岗位代码已经在数据库中,请重新输入');
      edPostNo.SetFocus;
    end;
  end;
end;

procedure TFmAddPost.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  dmUserManager.qryCheckPosts.Close;
end;

end.

⌨️ 快捷键说明

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