⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardaddon.pas

📁 1. 发卡服务端:Server 项目文件:autojet.prj 2. 计费客户端:Client 项目文件:internet.prj Explorer.prj 先启动Exp
💻 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 + -