📄 user.pas
字号:
unit user;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, DBCtrls, StdCtrls, ExtCtrls, Mask, Grids, DBGrids;
type
Tfrmuser = class(TForm)
dbguser: TDBGrid;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
dbmDesc: TDBMemo;
Label5: TLabel;
dbeID: TDBEdit;
dbename: TDBEdit;
dbepassword: TDBEdit;
dbetype: TDBEdit;
Panel1: TPanel;
Button1: TButton;
dbnuser: TDBNavigator;
tbluser: TTable;
dsuser: TDataSource;
tblvaild: TTable;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure tbluserBeforeDelete(DataSet: TDataSet);
procedure dbnuserClick(Sender: TObject; Button: TNavigateBtn);
procedure tbluserBeforePost(DataSet: TDataSet);
procedure tbluserAfterScroll(DataSet: TDataSet);
private
procedure ToggleMode;
{ Private declarations }
public
{ Public declarations }
end;
var
frmuser: Tfrmuser;
implementation
{$R *.dfm}
procedure Tfrmuser.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tbluser.Active:=false;
end;
procedure Tfrmuser.FormShow(Sender: TObject);
begin
tbluser.Active:=true;
end;
procedure Tfrmuser.ToggleMode;
procedure enableInput(enabled:boolean);
begin
dbguser.Enabled:=not enabled;
dbeID.Enabled:=enabled;
dbename.Enabled:=enabled;
dbepassword.Enabled:=enabled;
dbetype.Enabled:=enabled;
dbmDesc.Enabled:=enabled;
end;
begin
case tbluser.State of
dsedit,dsinsert:
begin
enableInput(true);
dbnuser.VisibleButtons:=[nbpost,nbcancel];
dbeID.SetFocus;
end;
else
begin
enableInput(false);
dbnuser.VisibleButtons:=[nbfirst,nbprior,nbnext,nblast,nbinsert,nbdelete,nbedit,nbpost,nbcancel,nbrefresh];
end;
end;
end;
procedure Tfrmuser.Button1Click(Sender: TObject);
begin
close;
end;
procedure Tfrmuser.tbluserBeforeDelete(DataSet: TDataSet);
var str:string;
begin
str:=format('确定要删除“%S”这个用户的吗?'#13,[tbluser['name']]);
if messagedlg(str,mtconfirmation,[mbyes,mbno],0)<>mryes then
abort;
end;
procedure Tfrmuser.dbnuserClick(Sender: TObject; Button: TNavigateBtn);
begin
ToggleMode;
end;
procedure Tfrmuser.tbluserBeforePost(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
tbluser.FieldByName(fieldname).AsString:=dbtext.Text;
end;
function vaildID :boolean;
var str:string;
begin
result:=true;
tblvaild.Active:=false;
tblvaild.TableName:='users';
tblvaild.Filter:='userID='+dbeID.Text;
tblvaild.filtered:=true;
tblvaild.Active:=true;
if not tblvaild.Eof then
begin
str:=format('"%S"用户号的用户已经存在,请从新输入'#13,[tblvaild['userID']]);
str:=str+format( '用户号为:“%S”'#13,[tblvaild['userID']]);
str:=str+format('用户名为:“%S”'#13,[tblvaild['name']]);
str:=str+format('密码为:“%S”'#13,[tblvaild['[passwd']]);
showmessage(str);
dbeID.SetFocus;
result:=false;
end;
tblvaild.Active:=false;
end;
begin
checkfield('userID','用户号',dbeID,true);
checkfield('name','用户名',dbename,true);
checkfield('passwd','用户名',dbepassword,true);
checkfield('type','类型号',dbetype,true);
checkfield('description','说明',dbmDesc,true);
if dbeID.Modified and not vaildID then
abort;
end;
procedure Tfrmuser.tbluserAfterScroll(DataSet: TDataSet);
begin
togglemode;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -