📄 frmaddreaderu.pas
字号:
unit frmAddReaderU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxClasses, cxControls,
cxGridCustomView, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxGrid, StdCtrls, Buttons, jpeg, ExtCtrls, ExtDlgs,
ComCtrls,Math;
type
TfrmAddReader = class(TForm)
Panel2: TPanel;
Label9: TLabel;
Label8: TLabel;
Label7: TLabel;
Label6: TLabel;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label2: TLabel;
Label12: TLabel;
Label10: TLabel;
Label1: TLabel;
rabMan: TRadioButton;
rabLady: TRadioButton;
Panel3: TPanel;
GroupBox1: TGroupBox;
imgPhoto: TImage;
moRemark: TMemo;
edPhoneNo: TEdit;
edName: TEdit;
edLeaseNo: TEdit;
edEMail: TEdit;
edUnit: TEdit;
edIDCard: TEdit;
edDuty: TEdit;
edDept: TEdit;
edAddress: TEdit;
btnSave: TBitBtn;
btnEdit: TBitBtn;
btnDel: TBitBtn;
btnClose: TBitBtn;
btnCancel: TBitBtn;
btnAdd: TBitBtn;
GroupBox3: TGroupBox;
cxgAddReader: TcxGrid;
cxgAddReaderDBTableView1: TcxGridDBTableView;
cxgAddReaderLevel1: TcxGridLevel;
dsAddReader: TDataSource;
OpenPictureDialog: TOpenPictureDialog;
btnInfoList: TBitBtn;
btnBrowse: TBitBtn;
cxgAddReaderDBTableView1DBColumn1: TcxGridDBColumn;
cxgAddReaderDBTableView1DBColumn2: TcxGridDBColumn;
cxgAddReaderDBTableView1DBColumn3: TcxGridDBColumn;
cxgAddReaderDBTableView1DBColumn4: TcxGridDBColumn;
cxgAddReaderDBTableView1DBColumn5: TcxGridDBColumn;
cxgAddReaderDBTableView1DBColumn6: TcxGridDBColumn;
cxgAddReaderDBTableView1DBColumn7: TcxGridDBColumn;
cxgAddReaderDBTableView1DBColumn8: TcxGridDBColumn;
gbRechargeable: TGroupBox;
rgBagMonth: TRadioGroup;
edBalance: TEdit;
Label11: TLabel;
labBagMoTim: TLabel;
dtBagMoTim: TDateTimePicker;
btnRechargeable: TBitBtn;
panRechargeable: TPanel;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
cxStyle2: TcxStyle;
cxStyle3: TcxStyle;
Label14: TLabel;
edPressGold: TEdit;
dtBagMoStTim: TDateTimePicker;
labBagMoTim2: TLabel;
procedure btnBrowseClick(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure btnInfoListClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure cxgAddReaderDBTableView1CellClick(
Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
procedure btnRechargeableClick(Sender: TObject);
procedure cxgAddReaderDBTableView1EditKeyPress(
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;
AEdit: TcxCustomEdit; var Key: Char);
procedure cxgAddReaderDBTableView1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
Procedure InfoList();
procedure TextEnable(enb:Boolean);
procedure ClsText();
public
{ Public declarations }
procedure Search(LeaseNO:String);
end;
var
frmAddReader: TfrmAddReader;
implementation
uses DMU, frmRechargeableU;
{$R *.dfm}
var
aeBoo:Boolean;
procedure TfrmAddReader.btnBrowseClick(Sender: TObject);
begin
if OpenPictureDialog.Execute then
imgPhoto.Picture.LoadFromFile(OpenPictureDialog.FileName);
end;
procedure TfrmAddReader.InfoList;
var
f:file of Byte;
TempPic:String;
begin
TempPic:=ExtractFilePath(Application.ExeName)+'temp.jpg';
edLeaseNo.Text:=Trim(Dm.adoAddReader.FieldByName('LeaseNo').AsString);
edName.Text:=Trim(Dm.adoAddReader.FieldByName('Name').AsString);
if Trim(Dm.adoAddReader.FieldByName('Sex').AsString)='0' then
begin
rabMan.Checked:=True;
rabLady.Checked:=False;
end
else if Trim(Dm.adoAddReader.FieldByName('Sex').AsString)='1'then
begin
rabMan.Checked:=False;
rabLady.Checked:=True;
end
else
begin
rabMan.Checked:=False;
rabLady.Checked:=False;
end;
edIDCard.Text:=Trim(Dm.adoAddReader.FieldByName('IDCard').AsString);
edUnit.Text:=Trim(Dm.adoAddReader.FieldByName('Unit').AsString);
edDept.Text:=Trim(Dm.adoAddReader.FieldByName('Dept').AsString);
edDuty.Text:=Trim(Dm.adoAddReader.FieldByName('Duty').AsString);
edPhoneNo.Text:=Trim(Dm.adoAddReader.FieldByName('PhoneNo').AsString);
edAddress.Text:=Trim(Dm.adoAddReader.FieldByName('Address').AsString);
edEMail.Text:=Trim(Dm.adoAddReader.FieldByname('Email').AsString);
moRemark.Lines.Text:=Trim(Dm.adoAddReader.FieldByName('Remark').AsString);
//===============读取相片===========
DeleteFile(TempPic);
TblobField(DM.adoAddReader.FieldByName('Photo')).SaveToFile(TempPic);
AssignFile(f,TempPic);
Reset(f);
if FileSize(f)=0 then
begin
imgPhoto.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\noPic.jpg');
CloseFile(f);
end
else
begin
CloseFile(f);
imgPhoto.Picture.LoadFromFile(TempPic);
end;
DeleteFile(TempPic);
(*
//--------检查包月是否过期----这里取消检测了,应为在借书还书时再进行检查
if Dm.adoAddReader.FieldByName('BagMonth').AsString='0' then//是否包月用户
if StrToDate(DM.adoAddReader.FieldByName('BagMoTim').AsString)<Date then//其包月时间已过
begin
Dm.adoAddReader.Edit;
Dm.adoAddReader.FieldByName('BagMonth').AsString:='1';//将该读者的借阅计费改为预存方式
Dm.adoAddReader.FieldByName('BagMoTim').AsString:='';
DM.adoAddReader.FieldByName('BagMoStTim').AsString:='';
Dm.adoAddReader.Post;
end;
*)
//=======读取充值信息======
if Dm.adoAddReader.FieldByName('PressGold').AsString<>''then
begin
rgBagMonth.ItemIndex:=Dm.adoAddReader.FieldByName('BagMonth').AsInteger;
edBalance.Text:=Trim(Dm.adoAddReader.FieldByName('Balance').AsString);
dtBagMoTim.Date:=Dm.adoAddReader.FieldByName('BagMoTim').AsDateTime;
dtBagMoStTim.Date:=DM.adoAddReader.FieldByName('BagMoStTim').AsDateTime;
edPressGold.Text:=Trim(Dm.adoAddReader.FieldByname('PressGold').AsString);
panRechargeable.Visible:=False;
if Dm.adoAddReader.FieldByName('BagMonth').AsString='1' then
begin
labBagMoTim.Visible:=False;
labBagMoTim2.Visible:=False;
dtBagMoTim.Visible:=False;
dtBagMoStTim.Visible:=False;
end
else
begin
labBagMoTim.Visible:=True;
labBagMoTim2.Visible:=True;
dtBagMoTim.Visible:=True;
dtBagMoStTim.Visible:=True;
end;
end
else
panRechargeable.Visible:=True;
end;
procedure TfrmAddReader.Search(LeaseNO: String);
var
mySQL:String;
begin
mySQL:='select * from Reader';
if LeaseNO<>'' then
mySQL:=mySQL+' where LeaseNo='+QuotedStr(LeaseNo);
mySQL:=mySQL+' Order By LeaseNo';
Dm.adoAddReader.Close;
Dm.adoAddReader.SQL.Clear;
Dm.adoAddReader.SQL.Text:=mySQL;
Dm.adoAddReader.Open;
InfoList();
end;
procedure TfrmAddReader.btnAddClick(Sender: TObject);
begin
aeBoo:=True;
TextEnable(True);
ClsText();
edLeaseNo.SetFocus;
end;
procedure TfrmAddReader.TextEnable(enb: Boolean);
begin
edLeaseNo.Enabled:=enb;
edName.Enabled:=enb;
rabMan.Enabled:=enb;
rabLady.Enabled:=enb;
edIDCard.Enabled:=enb;
edUnit.Enabled:=enb;
edDept.Enabled:=enb;
edDuty.Enabled:=enb;
edPhoneNo.Enabled:=enb;
edAddress.Enabled:=enb;
rgBagMonth.Enabled:=False;//充值功能上控制
edEmail.Enabled:=enb;
edBalance.Enabled:=False;//充值功能上控制
moRemark.Enabled:=enb;
cxgAddReader.Enabled:=not enb;
btnAdd.Enabled:=not enb;
btnEdit.Enabled:=not enb;
btnSave.Enabled:=enb;
btnCancel.Enabled:=enb;
btnDel.Enabled:=not enb;
btnClose.Enabled:=not enb;
btnInfoList.Enabled:=not enb;
btnBrowse.Enabled:=enb;
dtBagMoTim.Enabled:=False;//充值功能上控制
dtBagMoStTim.Enabled:=False;//同上
btnRechargeable.Enabled:=not enb;//充值功能上控制
edPressGold.Enabled:=False;//冲值功能上控制
end;
procedure TfrmAddReader.btnInfoListClick(Sender: TObject);
begin
Search('');
end;
procedure TfrmAddReader.ClsText;
begin
edLeaseNo.Clear;
edName.Clear;
rabMan.Checked:=False;
rabLady.Checked:=False;
edIDCard.Clear;
edUnit.Clear;
edDept.Clear;
edDuty.Clear;
edPhoneNo.Clear;
edAddress.Clear;
edEMail.Clear;
moRemark.Clear;
panRechargeable.Visible:=True;
imgPhoto.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\noPic.jpg');
end;
procedure TfrmAddReader.FormShow(Sender: TObject);
begin
TextEnable(False);
end;
procedure TfrmAddReader.btnCancelClick(Sender: TObject);
begin
TextEnable(False);
InfoList();
end;
procedure TfrmAddReader.btnEditClick(Sender: TObject);
begin
aeBoo:=False;
TextEnable(True);
edLeaseNo.Enabled:=False;
end;
procedure TfrmAddReader.btnDelClick(Sender: TObject);
var
str:String;
Money:Single;
begin
Dm.adoTemp.Close;
Dm.adoTemp.SQL.Clear;
Dm.adoTemp.SQL.Text:='select * from Loan where LeaseNo='+QuotedStr(edLeaseNo.Text);
Dm.adoTemp.Open;
if Dm.adoTemp.RecordCount>0 then
begin
MessageBox(0,Pchar('删除借书证号为“'+edLeaseNo.Text+'”失败,应为该读者尚未归还已借出的图书。'),'提示',MB_OK+MB_TASKMODAL+MB_ICONSTOP);
Dm.adoTemp.Close;
exit
end;
Dm.adoTemp.close;
if Dm.adoAddReader.Eof then
exit;
Money:=0;
str:='';
str:='真的要删除借书号为:“'+DM.adoAddReader.FieldByName('LeaseNo').AsString+'”'+chr(13)+'姓名名为:“'+DM.adoAddReader.FieldByName('Name').AsString+'”'+chr(13)+'的信息吗?';
if MessageBox(0,Pchar(str),'提示',mb_okCancel+MB_ICONQUESTION+MB_DEFBUTTON2+MB_TASKMODAL)=IDOK then
begin
//从冲值表中增加冲值性质为1的记录,并减回金额
if Dm.adoAddReader.FieldByName('PressGold').AsString<>''then
begin
if edBalance.Text<>''then
Money:=StrToFloat(edBalance.Text);
Money:=Money+StrToFloat(edPressGold.Text);
str:='对借书证号:“'+edLeaseNo.Text+'”,姓名:“'+edName.Text+'”的读者删除成功。';
Str:=Str+Chr(13)+'理应归还读者:'
+Chr(13)+'按金:'+edPressGold.Text+'元'
+Chr(13)+'余额:'+edBalance.Text+'元'
+Chr(13)+'共计人民币:'+FloatToStr(RoundTo(Money,-2));
Dm.adoTemp.Close;
Dm.adoTemp.SQL.Clear;
Dm.adoTemp.SQL.Text:='Select * from Rechargeable';
Dm.adoTemp.Open;
Dm.adoTemp.Append;
Dm.adoTemp.FieldByName('LeaseNo').AsString:=edLeaseNo.Text;
Dm.adoTemp.FieldByName('PressGold').AsString:='-'+edPressGold.Text;
Dm.adoTemp.FieldByName('Balance').AsString:='-'+edBalance.Text;
Dm.adoTemp.FieldByName('WTWK').AsString:='1';
Dm.adoTemp.FieldByName('Date').AsString:=DateToStr(Date);
Dm.adoTemp.Post;
Dm.adoTemp.Close;
Dm.adoTemp.SQL.Clear;
Dm.adoTemp.SQL.Text:='select * from BalaCcou';
Dm.adoTemp.Open;
Dm.adoTemp.Edit;
Dm.adoTemp.FieldByName('Money').AsString:=FloatToStr(StrToFloat(Dm.adoTemp.FieldByName('Money').AsString)-Money);
Dm.adoTemp.Post;
Dm.adoTemp.Close;
MessageBox(0,Pchar(str),'提示',MB_OK+MB_TASKMODAL+MB_ICONEXCLAMATION);
end;
Dm.adoAddReader.Delete;
ClsText();
end;
end;
procedure TfrmAddReader.btnCloseClick(Sender: TObject);
begin
close();
end;
procedure TfrmAddReader.btnSaveClick(Sender: TObject);
var
LeaseNo:String;
sex:Integer;
begin
if (Trim(edLeaseNo.Text)='') or (Trim(edName.Text)='') or (Trim(edIDCard.Text)='') then
begin
MessageBox(0,'借书证号、姓名和身份证不能为空,请输入该项信息。','提示',MB_OK+MB_ICONEXCLAMATION+MB_TASKMODAL);
exit;
end;
if not(rabMan.Checked or rabLady.Checked) then
begin
MessageBox(0,'请选择性别。','提示',MB_OK+MB_ICONEXCLAMATION+MB_TASKMODAL);
exit;
end;
LeaseNo:=Trim(edLeaseNo.Text);
if rabMan.Checked then
sex:=0
else
sex:=1;
if aeBoo then
begin
Dm.adoAddReader.Append;
Dm.adoTemp.Close;
Dm.adoTemp.SQL.Clear;
Dm.adoTemp.SQL.Text:='select LeaseNo From Reader where LeaseNo='+QuotedStr(LeaseNo);
Dm.adoTemp.Open;
if Dm.adoTemp.RecordCount>0 then
begin
MessageBox(0,'借书证号不能重复,请重新输入该项信息。','提示',MB_OK+MB_ICONEXCLAMATION+MB_TASKMODAL);
edLeaseNo.SetFocus;
Dm.adoTemp.Close;
exit;
end;
Dm.adoTemp.Close;
end
else
Dm.adoAddReader.Edit;
Dm.adoAddReader.FieldByName('LeaseNo').AsString:=Trim(edLeaseNo.Text);
Dm.adoAddReader.FieldByName('Name').AsString:=Trim(edName.Text);
Dm.adoAddReader.FieldByName('Sex').AsString:=IntToStr(sex);
Dm.adoAddReader.FieldByName('IDCard').AsString:=Trim(edIDCard.Text);
Dm.adoAddReader.FieldByName('Unit').AsString:=Trim(edUnit.Text);
Dm.adoAddReader.FieldByName('Dept').AsString:=Trim(edDept.Text);
Dm.adoAddReader.FieldByName('Duty').AsString:=Trim(edDuty.Text);
Dm.adoAddReader.FieldByName('PhoneNo').AsString:=Trim(edPhoneNo.Text);
Dm.adoAddReader.FieldByName('Address').AsString:=Trim(edAddress.Text);
Dm.adoAddReader.FieldByName('EMail').AsString:=Trim(edEMail.Text);
Dm.adoAddReader.FieldByName('Remark').AsString:=Trim(moRemark.Lines.Text);
if FileExists(OpenPictureDialog.FileName)then
TblobField(Dm.adoAddReader.FieldByName('Photo')).LoadFromFile(OpenPictureDialog.FileName);
Dm.adoAddReader.Post;
TextEnable(False);
OpenPictureDialog.FileName:='';
end;
procedure TfrmAddReader.cxgAddReaderDBTableView1CellClick(
Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
InfoList();
end;
procedure TfrmAddReader.btnRechargeableClick(Sender: TObject);
begin
frmRechargeable.Search(edLeaseNo.Text);
frmRechargeable.ShowModal;
end;
procedure TfrmAddReader.cxgAddReaderDBTableView1EditKeyPress(
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem;
AEdit: TcxCustomEdit; var Key: Char);
begin
InfoList();
end;
procedure TfrmAddReader.cxgAddReaderDBTableView1KeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
InfoList();
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -