📄 cardaddon.pas
字号:
unit CardAddOn;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TFrm_CardAddOn = class(TForm)
Label5: TLabel;
Label6: TLabel;
Label8: TLabel;
Lb_kysj: TLabel;
Lb_ZS: TLabel;
Lb_X: TLabel;
Lb_Y: TLabel;
LB_CardType: TLabel;
Lb_Deposit: TLabel;
LB_Payment: TLabel;
Label10: TLabel;
Label9: TLabel;
LB_Gift: TLabel;
LB_JSSS: TLabel;
Label11: TLabel;
LB_SYJE: TLabel;
Label7: TLabel;
Label4: TLabel;
Btn_Read: TButton;
Btn_Add: TButton;
Btn_Close: TButton;
Label1: TLabel;
LB_Gname: TLabel;
Bevel1: TBevel;
Label2: TLabel;
Lb_ZS1: TLabel;
Lb_kysj1: TLabel;
edt_Payment1: TEdit;
edt_Gift1: TEdit;
edt_JSSS1: TEdit;
Label13: TLabel;
LB_Y1: TLabel;
LB_X1: TLabel;
Picker_CardDate: TDateTimePicker;
Picker_CardTime: TDateTimePicker;
Btn_Save: TButton;
Btn_Cancel: TButton;
procedure FormShow(Sender: TObject);
procedure Btn_ReadClick(Sender: TObject);
procedure Btn_AddClick(Sender: TObject);
procedure Btn_CancelClick(Sender: TObject);
procedure Btn_SaveClick(Sender: TObject);
private
procedure disa ;
procedure enab ;
procedure ValidCheck(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;
var
Frm_CardAddOn: TFrm_CardAddOn;
implementation
uses sys_dm, sys_global, DllDef ;
{$R *.dfm}
var
checkFlag: char;
procedure TFrm_CardAddOn.disa ;
var
i: integer ;
begin
for i := 0 to Controlcount-1 do begin
if Controls[i].ClassType = TEdit then
TEdit(Controls[i]).Enabled := false ;
if Controls[i].ClassType = TDateTimePicker then
TDateTimePicker(Controls[i]).Enabled := false ;
end;
Btn_Read.Enabled := true ; Btn_Add.Enabled := true ; Btn_Close.Enabled := true ;
Btn_Save.Enabled := false ; Btn_Cancel.Enabled := false ;
end;
procedure TFrm_CardAddOn.enab ;
var
i: integer ;
begin
for i := 0 to Controlcount-1 do begin
if Controls[i].ClassType = TEdit then
TEdit(Controls[i]).Enabled := true ;
if Controls[i].ClassType = TDateTimePicker then
TDateTimePicker(Controls[i]).Enabled := true ;
end;
Btn_Read.Enabled := false ; Btn_Add.Enabled := false ; Btn_Close.Enabled := false ;
Btn_Save.Enabled := true ; Btn_Cancel.Enabled := true ;
edt_Payment1.SetFocus ;
end;
procedure TFrm_CardAddOn.FormShow(Sender: TObject);
begin
LB_CardType.Caption := '' ;
Lb_Deposit.Caption := '' ;
LB_Payment.Caption := '' ;
LB_Gift.Caption := '' ;
LB_JSSS.Caption := '' ;
LB_SYJE.Caption := '' ;
edt_Payment1.Text := '' ;
edt_Gift1.text := '' ;
edt_JSSS1.text := '' ;
LB_Gname.Caption := '' ;
if ChkCard(m_com) = 0 then Btn_Read.Click ; // 如果插入了卡,则读卡
end;
procedure TFrm_CardAddOn.Btn_ReadClick(Sender: TObject);
var
p: array[0..32] of char;
I:INTEGER;
begin
if ChkCard(m_com) <> 0 then begin
messagebox(handle,' 请插入IC卡 ', '提示', mb_ok+MB_ICONWARNING);
exit ;
end;
// 检查IC卡是否是新卡
I:=GETNO(m_com, p);
if I<>0 then begin
messagebox(handle,PCHAR(GETMSG(I)), '提示', mb_ok+MB_ICONWARNING);
exit;
end;
if CardInfo(m_ICtype, m_ICno, m_ICmoney, m_ICdate)= 0 then // 读卡成功
begin
if m_ICtype='4' then begin // 计时卡
Lb_kysj.Visible := true ;
LB_JSSS.visible := true ; //显示可用时间
Lb_X.Visible := true ;
Lb_kysj1.Visible := true ;
edt_JSSS1.visible := true ; //显示再加时间
Lb_X1.Visible := true ;
Lb_ZS.Visible := false ;
LB_Gift.Visible := false ; //不显示赠送
Lb_Y.Visible := false ;
Lb_ZS1.Visible := false ;
edt_Gift1.Visible := false ; //不显示再赠送
Lb_Y1.Visible := false ;
end else begin
Lb_kysj.Visible := false ;
Lb_JSSS.visible := false ; //不显示可用时间
Lb_X.Visible := false ;
Lb_kysj1.Visible := false ;
edt_JSSS1.visible := false ; //不显示可用时间
Lb_X1.Visible := false ;
Lb_ZS.Visible := true ;
LB_Gift.Visible := true ; //显示赠送
Lb_Y.Visible := true ;
Lb_ZS1.Visible := true ;
edt_Gift1.Visible := true ; //显示再赠送
Lb_Y1.Visible := true ;
end;
end else begin
messagebox(handle,' 卡已损坏, 请再试几次 ', '提示', mb_ok+MB_ICONWARNING);
exit ;
end;
with frm_sys_dm.Qr_tmp1 do
begin
close;
sql.clear;
sql.text := 'select * from card where Icno='+intTostr(strToint(m_ICno)) ;
open;
LB_CardType.Caption := fieldbyname('icType').AsString ;
Lb_Deposit.Caption := floatTostr(fieldbyname('Deposit').AsFloat);
LB_Payment.Caption := floatTostr(fieldbyname('Payment').AsFloat);
LB_Gift.Caption := floatTostr(fieldbyname('Gift').AsFloat);
LB_JSSS.Caption := floatTostr(fieldbyname('JSSS').AsFloat /60) ;
if m_ICtype='4' then // 计时卡
LB_SYJE.caption := GetHourMinute(Trunc(m_ICmoney))
else
LB_SYJE.caption := floatTostr(m_ICmoney)+' 元' ;
Picker_CardDate.Date := m_ICdate ;
Picker_CardTime.Time := m_ICdate ;
LB_Gname.caption := fieldbyname('Gname').AsString ;
end;
edt_Payment1.Text := '' ;
edt_Gift1.text := '' ;
edt_JSSS1.text := '' ;
Btn_Read.Tag := 1 ;
end;
procedure TFrm_CardAddOn.Btn_CancelClick(Sender: TObject);
begin
edt_Payment1.Text := '' ;
edt_Gift1.text := '' ;
edt_JSSS1.text := '' ;
disa ;
end;
procedure TFrm_CardAddOn.Btn_AddClick(Sender: TObject);
begin
if Btn_Read.Tag = 0 then begin
messagebox(handle, '请先读卡, 再加钱', '提示', mb_ok+mb_iconstop);
exit ;
end;
if CardInfo(m_ICtype, m_ICno, m_ICmoney, m_ICdate)= 0 then // 读卡成功
if m_ICtype='5' then begin
messagebox(handle, ' 管理卡不可加钱', '提示', mb_ok+mb_iconstop);
exit ;
end;
edt_Payment1.text := '';
edt_Gift1.text := '';
edt_JSSS1.text := '';
enab ;
end;
procedure TFrm_CardAddOn.ValidCheck(Sender: TObject);
var
p: array[0..32] of char;
IcCardNo: string ;
begin
// 检查有无IC卡插入
if ChkCard(m_com) <> 0 then begin
messagebox(handle,' 请插入IC卡 ', '提示', mb_ok+MB_ICONWARNING);
checkFlag :='0' ;
exit ;
end;
// 检查是否更换了其它的卡
if getno(m_com, p) = 7 then begin
messagebox(handle,pchar(' 这已是一张新卡.'+#13+#13+' 按确定键退出 ! '), '提示', mb_ok+MB_ICONWARNING);
checkFlag :='0' ;
exit ;
end else begin
IcCardNo := copy(p,2,5) ;
if IcCardNo <> m_ICno then begin
messagebox(handle,' 已换了另一张卡, 按确定键退出 ! ', '提示', mb_ok+MB_ICONWARNING);
checkFlag :='0' ;
exit ;
end;
end;
// 检查网络是否正常
m_Stop := '0' ;
ServerDateTime ;
if m_Stop = '9' then begin
messagebox(handle,' 网络不通, 该卡暂时不能处理! ', '提示', mb_ok+MB_ICONWARNING);
checkFlag :='0' ;
exit ;
end;
edt_Payment1.text := trim(edt_Payment1.text);
edt_Gift1.text := trim(edt_Gift1.text);
edt_JSSS1.text := trim(edt_JSSS1.text);
if edt_Payment1.text='' then edt_Payment1.text:='0' ;
if edt_Gift1.text='' then edt_Gift1.text:='0' ;
if edt_JSSS1.text='' then edt_JSSS1.text:='0' ;
try
strTofloat(edt_Payment1.text)
except
MessageBox(handle, ' 预付金额有错!','提示', mb_ok+mb_iconstop);
edt_Payment1.SetFocus ;
checkFlag :='0' ;
exit;
end;
try
strTofloat(edt_Gift1.text)
except
MessageBox(handle, ' 赠送金额有错!','提示', mb_ok+mb_iconstop);
edt_Gift1.SetFocus ;
checkFlag :='0' ;
exit;
end;
if strTofloat(edt_Payment1.text)+strTofloat(edt_Gift1.text)>9999.99 then begin
MessageBox(handle, ' 金额有错!','提示', mb_ok+mb_iconstop);
edt_Payment1.SetFocus ;
checkFlag :='0' ;
exit;
end;
try
strTofloat(edt_JSSS1.text)
except
MessageBox(handle, ' 可上机时间有错!','提示', mb_ok+mb_iconstop);
edt_JSSS1.SetFocus ;
checkFlag :='0' ;
exit;
end;
if strTofloat(edt_JSSS1.text)*60>9999.99 then begin
MessageBox(handle, ' 可上机时间有错!','提示', mb_ok+mb_iconstop);
edt_JSSS1.SetFocus ;
checkFlag :='0' ;
exit;
end;
end;
procedure TFrm_CardAddOn.Btn_SaveClick(Sender: TObject);
var
No, Info: string ; // 写卡函数需要的二个变量
s1, s2: string ;
fmoney: currency ;
eDateTime: TDateTime ;
IcDate: string ;
begin
checkFlag := '1' ; // 假定能通过有效性检查
ValidCheck(sender); // 进行有效性检查
if checkFlag='0' then exit; // 若检查通不过, 则自动退出
if messagebox(handle,pchar('客人又充值 '+edt_Payment1.Text+' 元'+#13+#13+' 您确定吗? '), '提示',mb_okcancel+mb_iconquestion)=idcancel then
exit ;
if m_ICtype='4' then
fmoney := m_ICmoney + strTofloat(edt_JSSS1.Text)*60
else
fmoney := m_ICmoney + strTofloat(edt_Payment1.text)+ strTofloat(edt_Gift1.text);
s1 := formatdatetime('yyyy"-"mm"-"dd', Picker_CardDate.Date) ;
s2 := formatdatetime('hh":"nn":"ss', Picker_CardDate.time) ;
IcDate := s1 + ' '+ s2 ;
info := MoneyString(fmoney)+copy(s1,3,2)+copy(s1,6,2)+copy(s1,9,2)+copy(s2,1,2)+copy(s2,4,2);
no := m_ICtype+m_ICno ;
// 若写卡不成功, 要再写一次
if change(m_com, pchar(No), pchar(info)) <> 0 then
if messagebox(handle,'写卡时出错, 是否再写一次?','提示', MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON1)=IDYES then begin
if change(m_com, pchar(No), pchar(info)) <> 0 then begin
messagebox(handle,' 卡已损坏, 请再换一张卡 ', '提示', mb_ok+MB_ICONWARNING);
exit ;
end
end else begin
messagebox(handle,' 卡已损坏, 请再换一张卡 ', '提示', mb_ok+MB_ICONWARNING);
exit ;
end ;
eDateTime := now ; // 当前的时间
// 更改表CARD
with frm_sys_dm.Qr_tmp1 do
begin
close;
sql.clear;
if m_ICtype='4' then
sql.Text := 'update Card set payment=payment+'+edt_Payment1.Text
+', JSSS=JSSS+'+ floatTostr(strTofloat(edt_JSSS1.Text)*60)
+', SYSJ='+floatTostr(fmoney)
+', ICDate= CONVERT(DATETIME,'''+IcDate+''',120)'
+', Gxrq='''+DateTimeTostr(eDateTime)+''''
+', Operator2='''+m_OpName+''''
+' where Icno='+intTostr(strToint(m_ICno))
else
sql.Text := 'update Card set payment=payment+'+edt_Payment1.Text
+', Gift=Gift+'+edt_gift1.text
+', SYJE='+floatTostr(fmoney)
+', ICDate=CONVERT(DATETIME,'''+IcDate+''',120)'
+', Gxrq='''+DateTimeTostr(eDateTime)+''''
+', Operator2='''+m_OpName+''''
+' where Icno='+intTostr(strToint(m_ICno)) ;
try
execsql;
except
messagebox(handle, '卡片充值不成功!','提示',mb_ok+mb_iconstop);
exit;
end;
end;
// 写借贷表
if strTofloat(edt_Payment1.Text) <> 0 then
with frm_sys_dm.Qr_tmp1 do begin
close;
sql.clear;
sql.add('insert into Pbill');
sql.add('(icNo, Edate, itemName, JF, Operator)');
sql.add('values (:icNo, :Edate, :itemName, :JF, :Operator)');
Parameters.parambyname('icNo').Value := strToint(m_ICno) ;
Parameters.parambyname('Edate').value := eDateTime ;
Parameters.parambyname('itemName').value := 'CZ' ;
Parameters.parambyname('JF').value := strTofloat(edt_Payment1.Text) ;
Parameters.parambyname('Operator').value := m_OpName ;
try
execsql;
except
application.messagebox('充值不成功, 借贷表出问题!','提示',mb_ok+mb_iconstop);
exit;
end;
end;
if strTofloat(edt_Gift1.Text) <> 0 then
with frm_sys_dm.Qr_tmp1 do begin
close;
sql.clear;
sql.add('insert into Pbill');
sql.add('(icNo, Edate, itemName, JF, Operator)');
sql.add('values (:icNo, :Edate, :itemName, :JF, :Operator)');
Parameters.parambyname('icNo').Value := strToint(m_ICno) ;
Parameters.parambyname('Edate').value := eDateTime ;
Parameters.parambyname('itemName').value := 'ZS' ;
Parameters.parambyname('JF').value := strTofloat(edt_Gift1.Text) ;
Parameters.parambyname('Operator').value := m_OpName ;
try
execsql;
except
application.messagebox('充值不成功, 借贷表出问题!','提示',mb_ok+mb_iconstop);
exit;
end;
end;
disa ; // 屏蔽edit
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -