📄 wnaddpost.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 + -