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