📄 registermember.pas
字号:
unit registerMember;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Spin, ComCtrls, StdCtrls, Grids, DBGrids, ExtCtrls, DB, DBTables,
IdGlobal;
type
TfrmRegisterMember = class(TForm)
GroupBox1: TGroupBox;
eduLevel: TComboBox;
Label5: TLabel;
folk: TEdit;
Label2: TLabel;
memberName: TEdit;
Label1: TLabel;
gender: TComboBox;
Label11: TLabel;
birthday: TDateTimePicker;
Label8: TLabel;
Label10: TLabel;
Label9: TLabel;
joinTime: TDateTimePicker;
Label7: TLabel;
Label3: TLabel;
address: TEdit;
Label4: TLabel;
balance: TEdit;
Label6: TLabel;
telephone: TEdit;
Label12: TLabel;
memberId: TEdit;
deficiency: TEdit;
note: TEdit;
Label13: TLabel;
Label14: TLabel;
btnOk: TButton;
btnClear: TButton;
Panel1: TPanel;
DBGrid1: TDBGrid;
GroupBox3: TGroupBox;
asc: TRadioButton;
desc: TRadioButton;
GroupBox2: TGroupBox;
id: TRadioButton;
name: TRadioButton;
edu: TRadioButton;
join: TRadioButton;
Label15: TLabel;
profession: TComboBox;
DataSource1: TDataSource;
Query1: TQuery;
dot: TLabel;
level: TLabel;
Table1: TTable;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label16: TLabel;
Label22: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnCloseClick(Sender: TObject);
procedure ascClick(Sender: TObject);
procedure descClick(Sender: TObject);
procedure idClick(Sender: TObject);
procedure nameClick(Sender: TObject);
procedure eduClick(Sender: TObject);
procedure joinClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnOkClick(Sender: TObject);
private
{ Private declarations }
function isMoney(s:string):boolean; //判断s可否转化成货币类型
function isTelephone(s:string):boolean; //判断s是否为合法的电话号码
public
{ Public declarations }
end;
var
frmRegisterMember: TfrmRegisterMember;
implementation
{$R *.dfm}
procedure TfrmRegisterMember.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
query1.Close;
self.free;
end;
procedure TfrmRegisterMember.btnCloseClick(Sender: TObject);
begin
self.free;
end;
procedure TfrmRegisterMember.ascClick(Sender: TObject);
var
col:string;
begin
if id.Checked then col:='会员编号'
else if name.Checked then col:='会员姓名'
else if edu.Checked then col:='学历'
else if join.Checked then col:='入会时间';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from member order by '+col+' asc');
try
query1.Open;
except
query1.ExecSQL;
end;
end;
procedure TfrmRegisterMember.descClick(Sender: TObject);
var
col:string;
begin
if id.Checked then col:='会员编号'
else if name.Checked then col:='会员姓名'
else if edu.Checked then col:='学历'
else if join.Checked then col:='入会时间';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from member order by '+col+' desc');
try
query1.Open;
except
query1.ExecSQL;
end;
end;
procedure TfrmRegisterMember.idClick(Sender: TObject);
var
t:string;
begin
if asc.Checked then t:='asc'
else if desc.Checked then t:='desc';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from member order by 会员编号 '+t);
try
query1.Open;
except
query1.ExecSQL;
end;
end;
procedure TfrmRegisterMember.nameClick(Sender: TObject);
var
s:string;
begin
if asc.Checked then s:='asc'
else if desc.Checked then s:='desc';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from member order by 会员姓名 '+s);
try
query1.Open;
except
query1.ExecSQL;
end;
end;
procedure TfrmRegisterMember.eduClick(Sender: TObject);
var
s:string;
begin
if asc.Checked then s:='asc'
else if desc.Checked then s:='desc';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from member order by 级别 '+s);
try
query1.Open;
except
query1.ExecSQL;
end;
end;
procedure TfrmRegisterMember.joinClick(Sender: TObject);
var
s:string;
begin
if asc.Checked then s:='asc'
else if desc.Checked then s:='desc';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from member order by 入会时间 '+s);
try
query1.Open;
except
query1.ExecSQL;
end;
end;
procedure TfrmRegisterMember.btnClearClick(Sender: TObject);
var
maxNo,tmp:integer;
begin
{获取新添加会员的编号----------<会员表>}
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;
memberId.Text:=intToStr(maxNo+1);
activeControl:=memberName;
memberName.Text:='';
folk.Text:='';
gender.ItemIndex:=0;
birthday.Date:=now;
eduLevel.ItemIndex:=0;
telephone.Text:='';
address.Text:='';
joinTime.DateTime:=now;
balance.Text:='';
deficiency.Text:='';
profession.ItemIndex:=0;
note.Text:='';
end;
procedure TfrmRegisterMember.FormCreate(Sender: TObject);
var
maxNo,tmp:integer;
begin
birthday.Date:=strToDate('1980-3-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;
memberId.Text:=intToStr(maxNo+1);
activeControl:=memberName;
end;
procedure TfrmRegisterMember.btnOkClick(Sender: TObject);
var
maxNo,tmp:integer;
begin
{添加一个新会员----------<会员表>}
try
{检查"会员姓名"}
if (memberName.Text='') or (length(memberName.Text)>8) then
begin
messageDlg('"会员姓名"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=memberName;
abort;
end;
{检查"生日"与"入会时间"}
if birthday.Date>=joinTime.Date then
begin
messageDlg('"入会时间"或"生日"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=birthDay;
abort;
end;
{检查"联系电话"}
if (length(telephone.Text)>12)or(isTelephone(telephone.Text)=false) then
begin
messageDlg('"联系电话"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=telephone;
abort;
end;
{检查"民族"}
if(length(folk.Text)>6) then
begin
messageDlg('"民族"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=folk;
abort;
end;
{检查"住址"}
if(length(address.Text)>20) then
begin
messageDlg('"住址"输入过长,请重新输入!',mtWarning,[mbOk],0);
activeControl:=address;
abort;
end;
{检查"结余"}
if isMoney(balance.Text)=false then
begin
messageDlg('"结余"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=balance;
abort;
end;
{检查"欠款"}
if isMoney(deficiency.Text)=false then
begin
messageDlg('"欠款"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=deficiency;
abort;
end;
{检查"备注"}
if length(note.Text)>60 then
begin
messageDlg('"备注"输入过长,请重新输入!',mtWarning,[mbOk],0);
activeControl:=note;
abort;
end;
{将会员数据填入<会员表>}
with table1 do
begin
open;
append;
fieldByName('会员编号').AsInteger:=strToInt(memberId.Text);
fieldByName('会员姓名').AsString:=memberName.Text;
fieldByName('性别').AsString:=gender.Text;
fieldByName('民族').AsString:=folk.Text;
fieldByName('学历').AsString:=eduLevel.Text;
fieldByName('生日').AsDateTime:=birthday.Date;
fieldByName('点数').AsInteger:=0;
fieldByName('级别').AsString:='普通会员';
fieldByName('电话').AsString:=telephone.Text;
fieldByName('地址').AsString:=address.Text;
fieldByName('入会时间').AsDateTime:=joinTime.Date;
fieldByName('备注').AsString:=note.Text;
fieldByName('结余').AsString:=balance.Text;
fieldByName('欠款').AsString:=deficiency.Text;
fieldByName('职业').AsString:=profession.Text;
post;
close;
end;
except
on ex:EConvertError do
begin
messageDlg('输入有误,请重试!',mtWarning,[mbOk],0);
end;
end; {end of try}
{让数据控件dbGrid1同步显示}
with query1 do
begin
close;
sql.Clear;
sql.Add('select * from member');
open;
end;
{清屏准备输入下一位新会员}
btnClearClick(Sender);//调用清屏按钮的处理操作
messageDlg('新会员添加成功!',mtWarning,[mbOk],0);
activeControl:=memberName;
end;
function TfrmRegisterMember.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 TfrmRegisterMember.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;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -