📄 userinfofrm.~pas
字号:
unit UserInfoFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBTables, DB, Grids, DBGrids, IdGlobal, ComCtrls;
type
TUserInfo = class(TForm)
DBGrid1: TDBGrid;
Query1: TQuery;
DataSource1: TDataSource;
Table1: TTable;
GroupBox1: TGroupBox;
SortAsc: TRadioButton;
SortDesc: TRadioButton;
GroupBox2: TGroupBox;
id: TRadioButton;
name: TRadioButton;
enrolltime: TRadioButton;
level: TRadioButton;
GroupBox3: TGroupBox;
btnAdd: TButton;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
UserID: TEdit;
UserName: TEdit;
birthday: TDateTimePicker;
gender: TComboBox;
btnModify: TButton;
Label1: TLabel;
CardNum: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label13: TLabel;
joinTime: TDateTimePicker;
arrearage: TEdit;
btnDelete: TButton;
btnClear: TButton;
Label6: TLabel;
Label10: TLabel;
tel: TEdit;
address: TEdit;
Label9: TLabel;
note: TEdit;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure SortAscClick(Sender: TObject);
procedure SortDescClick(Sender: TObject);
procedure idClick(Sender: TObject);
procedure nameClick(Sender: TObject);
procedure enrolltimeClick(Sender: TObject);
procedure levelClick(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure btnClearClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure btnModifyClick(Sender: TObject);
private
{ Private declarations }
//判断输入是否为金额
function isMoney(s:string):boolean;
//判断输入是否为电话号码
function isTelephone(s:string):boolean;
public
{ Public declarations }
end;
var
UserInfo: TUserInfo;
implementation
uses ModifyUserfrm, delUserfrm;
{$R *.dfm}
function TUserInfo.isMoney(s: string): boolean;
var
i:integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if (isNumeric(s[i])=false) and (s[i]<>'.')then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end;
function TUserInfo.isTelephone(s: string): boolean;
var
i:integer;
begin
if length(s)=0 then
begin
result:=true;
exit;
end;
i:=1;
while i<=length(s) do
begin
if isNumeric(s[i])=false then
begin
result:=false;
exit;
end;
i:=i+1;
end;
end;
procedure TUserInfo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
query1.Close;
self.free;
end;
procedure TUserInfo.FormCreate(Sender: TObject);
var
maxNo, tmp:integer;
begin
birthday.Date:=strToDate('1979-12-6');
joinTime.Date:=now;
{获取新添加用户的编号}
with table1 do
begin
open;
first;
maxNo:=fieldByName('用户编号').AsInteger;
while not eof do
begin
tmp:=fieldByName('用户编号').AsInteger;
if maxNo<tmp then maxNo:=tmp;
next;
end;
close;
end;
UserID.Text:=intToStr(maxNo+1);
activeControl:=UserName;
end;
procedure TUserInfo.btnAddClick(Sender: TObject);
var
maxNo, temp : integer;
begin
// 添加一个用户
try
//检查用户名是否为空
if( UserName.text = '') then
begin
messageDlg('"用户姓名"不能为空,请重新输入!',mtWarning,[mbOk],0);
activeControl:=UserName;
abort;
end
//检查用户名是否过长
else if(length(UserName.Text) > 8)then
begin
messageDlg('"用户姓名"太长,请重新输入!',mtWarning,[mbOk],0);
activeControl:=UserName;
abort;
end
//检查生日是否合法
else if(birthday.Date>=joinTime.Date) then
begin
messageDlg('"生日"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=birthDay;
abort;
end
//检查联系电话
else if(length(tel.Text)>12 ) or (isTelephone(tel.Text)=false) then
begin
messageDlg('"联系电话"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=tel;
abort;
end
//检查住址
else if(length(address.Text) > 20 ) then
begin
messageDlg('"住址"输入过长,请重新输入!',mtWarning,[mbOk],0);
activeControl:=address;
abort;
end
//检查欠费
else if(ismoney(arrearage.text) = false) then
begin
messageDlg('"欠费"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=arrearage;
abort;
end
//检查备注
else if length(note.Text)>60 then
begin
messageDlg('"备注"输入过长,请重新输入!',mtWarning,[mbOk],0);
activeControl:=note;
abort;
end;
//
with Table1 do
begin
open;
append;
fieldByName('用户编号').AsInteger := strToInt(UserID.text);
fieldByName('姓名').AsString := UserName.text;
fieldByName('性别').AsString:=gender.Text;
fieldByName('生日').AsDateTime:=birthday.Date;
fieldByName('证件号码').AsString := CardNum.text;
fieldByName('级别').AsString:='普通会员';
fieldByName('电话').AsString:=tel.Text;
fieldByName('地址').AsString:=address.Text;
fieldByName('注册时间').AsDateTime:=joinTime.Date;
fieldByName('欠费').AsString:=arrearage.Text;
fieldByName('备注').AsString:=note.Text;
post;
close;
end;
except
on ex:EConvertError do
begin
messageDlg('输入有误,请重试!',mtWarning,[mbOk],0);
end;
end;{end of try}
// 更新表格使它同步显示添加内容
with Query1 do
begin
close;
sql.Clear;
sql.Add('select * from Userinfo');
open;
end;
// 显示添加成功消息
messageDlg('新用户添加成功!',mtWarning,[mbOk],0);
// 设置对话框焦点
activeControl:=UserName;
end;
procedure TUserInfo.SortAscClick(Sender: TObject);
var
context : string;
begin
if( id.Checked = true )
then context := '用户编号'
else if ( name.Checked = true )
then context := '姓名'
else if ( enrolltime.Checked )
then context := '注册时间'
else if ( level.checked )
then context := '级别';
//改变查询语句
Query1.close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from UserInfo order by '+context+' asc');
//重新查询
try
Query1.Open;
except
Query1.ExecSQL;
end;
end;
procedure TUserInfo.SortDescClick(Sender: TObject);
var
context : string;
begin
if( id.Checked = true )
then context := '用户编号'
else if ( name.Checked = true )
then context := '姓名'
else if ( enrolltime.Checked )
then context := '注册时间'
else if ( level.checked )
then context := '级别';
//改变查询语句
Query1.close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from UserInfo order by '+context+' desc');
//重新查询
try
Query1.Open;
except
Query1.ExecSQL;
end;
end;
procedure TUserInfo.idClick(Sender: TObject);
var
sorttype : string;
begin
//确定排序方式
if ( sortasc.Checked )
then
sorttype := 'asc'
else
sorttype := 'desc';
//更新表格
//改变查询语句
Query1.close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from UserInfo order by 用户编号 ' + sorttype);
//重新查询
try
Query1.Open;
except
Query1.ExecSQL;
end;
end;
procedure TUserInfo.nameClick(Sender: TObject);
var
sorttype : string;
begin
//确定排序方式
if ( sortasc.Checked )
then
sorttype := 'asc'
else
sorttype := 'desc';
//更新表格
//改变查询语句
Query1.close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from UserInfo order by 姓名 ' + sorttype);
//重新查询
try
Query1.Open;
except
Query1.ExecSQL;
end;
end;
procedure TUserInfo.enrolltimeClick(Sender: TObject);
var
sorttype : string;
begin
//确定排序方式
if ( sortasc.Checked )
then
sorttype := 'asc'
else
sorttype := 'desc';
//更新表格
//改变查询语句
Query1.close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from UserInfo order by 注册时间 ' + sorttype);
//重新查询
try
Query1.Open;
except
Query1.ExecSQL;
end;
end;
procedure TUserInfo.levelClick(Sender: TObject);
var
sorttype : string;
begin
//确定排序方式
if ( sortasc.Checked )
then
sorttype := 'asc'
else
sorttype := 'desc';
//更新表格
//改变查询语句
Query1.close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from UserInfo order by 级别 ' + sorttype);
//重新查询
try
Query1.Open;
except
Query1.ExecSQL;
end;
end;
procedure TUserInfo.DBGrid1CellClick(Column: TColumn);
begin
// messageDlg('hehe',mtWarning,[mbOk],0);
end;
procedure TUserInfo.btnClearClick(Sender: TObject);
begin
UserName.Text := '';
UserID.Text := '';
gender.ItemIndex := 0;
birthday.DateTime := now;
joinTime.DateTime := now;
CardNum.Text := '';
arrearage.text := '';
tel.text := '';
address.text := '';
note.text := '';
end;
procedure TUserInfo.btnDeleteClick(Sender: TObject);
begin
//
frmdelUser := TfrmdelUser.Create(self);
frmdelUser.ShowModal;
//更新表格
Query1.Close;
Query1.Open;
end;
procedure TUserInfo.btnModifyClick(Sender: TObject);
begin
//
frmModifyUser := TfrmModifyUser.Create(self);
frmModifyUser.ShowModal;
//更新表格
Query1.Close;
Query1.Open;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -