📄 iccardmain.pas
字号:
unit IcCardMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, DB, DBTables, Grids,
DBGrids, DosMove, Menus, XPMenu, IniFiles, ImgList;
type
TIcCardForm = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
btnReadCard: TBitBtn;
memRead: TMemo;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
edtRCardId: TLabeledEdit;
edtRCardJe: TLabeledEdit;
edtWriteCard: TBitBtn;
memWrite: TMemo;
GroupBox3: TGroupBox;
edtWCardId: TLabeledEdit;
edtWKrxm: TLabeledEdit;
edtWZjhm: TLabeledEdit;
edtWCardJe: TLabeledEdit;
edtWXkr: TLabeledEdit;
tblCard: TTable;
Panel2: TPanel;
DBGrid1: TDBGrid;
dsCard: TDataSource;
edtRId: TLabeledEdit;
edtRKrxm: TLabeledEdit;
edtRZjhm: TLabeledEdit;
edtRZe: TLabeledEdit;
edtRXkr: TLabeledEdit;
btnPrint: TBitBtn;
lblZe: TLabel;
lblJe: TLabel;
lblYe: TLabel;
qrySum: TQuery;
tblKrjz: TTable;
TabSheet5: TTabSheet;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
memCz: TMemo;
GroupBox4: TGroupBox;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
GroupBox5: TGroupBox;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
LabeledEdit6: TLabeledEdit;
LabeledEdit7: TLabeledEdit;
edtCzje: TLabeledEdit;
Panel4: TPanel;
qryCardXf: TQuery;
DBGrid2: TDBGrid;
dsCardxf: TDataSource;
Label3: TLabel;
edtCardid: TEdit;
BitBtn3: TBitBtn;
lblXfje: TLabel;
BitBtn4: TBitBtn;
edtRJe: TLabeledEdit;
edtRYe: TLabeledEdit;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
A1: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
ImageList1: TImageList;
DosMove1: TDosMove;
tblKrjzD_JZBH: TStringField;
tblKrjzD_HH: TIntegerField;
tblKrjzD_XMBH: TStringField;
tblKrjzD_XFDJ: TFloatField;
tblKrjzD_XFSL: TFloatField;
tblKrjzD_XFGG: TStringField;
tblKrjzD_XFJE: TFloatField;
tblKrjzD_YJJE: TFloatField;
tblKrjzD_YHJE: TFloatField;
tblKrjzD_JZFS: TStringField;
tblKrjzD_JZLX: TStringField;
tblKrjzD_KHBH: TStringField;
tblKrjzD_XYKBH: TStringField;
tblKrjzD_JZRQ: TDateTimeField;
tblKrjzD_JZSJ: TDateTimeField;
tblKrjzD_CZYXM: TStringField;
tblKrjzD_BZ: TStringField;
tblKrjzD_YSRQ: TStringField;
procedure btnReadCardClick(Sender: TObject);
procedure edtWriteCardClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure btnPrintClick(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure A1Click(Sender: TObject);
procedure N14Click(Sender: TObject);
private
{ Private declarations }
Je : Single;
function IsValid: Boolean;
procedure UpdateKrjz(const aKrxm: string);
public
{ Public declarations }
end;
var
IcCardForm: TIcCardForm;
implementation
uses IcCardDefine, drv_unit, C_CardData, C_Sysprint, C_Klsz, C_Password,
C_Xtsz, C_About;
{$R *.dfm}
procedure TIcCardForm.UpdateKrjz(const aKrxm: string);
var
AJzbh: string;
begin
tblKrjz.Open;
AJzbh := CardData.GetBh('D_JZBH',PREV_JZBH);
tblKrjz.Insert;
tblKrjzD_JZBH.Value := AJzbh;
tblKrjzD_HH.Value := 0;
tblKrjzD_JZRQ.Value := Date;
tblKrjzD_JZSJ.Value := Time;
tblKrjzD_JZFS.Value := JZFS_GBK;
tblKrjzD_JZLX.Value := JZLX_YJK;
tblKrjzD_XFJE.Value := Je;
tblKrjzD_CZYXM.Value:= CZY.CzyXm;
tblKrjzD_BZ.Value := '贵宾卡预交款 '+aKrxm;
tblKrjz.Post;
tblKrjz.Insert;
tblKrjzD_JZBH.Value := AJzbh;
tblKrjzD_HH.Value := 1;
tblKrjzD_JZRQ.Value := Date;
tblKrjzD_JZSJ.Value := Time;
tblKrjzD_JZFS.Value := JZFS_GBK;
tblKrjzD_JZLX.Value := JZLX_YJK;
tblKrjzD_XMBH.Value := XMBH_YJK;
tblKrjzD_XFJE.Value := Je;
tblKrjzD_CZYXM.Value:= CZY.CzyXm;
tblKrjzD_BZ.Value := '贵宾卡预交款 '+aKrxm;
tblKrjz.Post;
tblKrjz.Close;
end;
function TIcCardForm.IsValid: Boolean;
begin
Result := True;
if edtWCardId.Text = '' then
begin
ShowMessage('请输入贵宾卡卡号!');
Result := False;
Exit;
end;
if Length(edtWCardId.Text) > 6 then
begin
ShowMessage('贵宾卡卡号长度不能大于6!');
Result := False;
Exit;
end;
if edtWCardJe.Text = '' then
begin
ShowMessage('请输入贵宾卡金额!');
Result := False;
Exit;
end;
if tblCard.FindKey([edtWCardId.Text]) then
begin
ShowMessage('贵宾卡卡号已经存在!');
Result := False;
Exit;
end;
end;
procedure TIcCardForm.btnReadCardClick(Sender: TObject);
var
st : SmallInt;
s: string;
Je: single;
begin
edtRCardId.Text := '';
edtRCardJe.Text := '';
edtRId.Text := '';
edtRKrxm.Text := '';
edtRZjhm.Text := '';
edtRJe.Text := '';
edtRXkr.Text := '';
try
InitStatus(PORTNUM);
GetMem(OutBuf,6);
if not IsCardExists then
begin
memRead.Lines.Add('请插入贵宾卡!');
Exit;
end;
st := IC_Read(IcDev,32,6,OutBuf);
if st <> 0 then
raise Exception.Create('读卡错误!');
s := StrPas(OutBuf);
edtRCardId.Text := s;
st := IC_Read_Float(IcDev,38,@Je);
if st <> 0 then
raise Exception.Create('读卡错误!');
edtRCardJe.Text := FloatToStr(Je);
memRead.Lines.Add('读卡成功!');
if tblCard.FindKey([s]) then
begin
edtRId.Text := tblCard.FieldByName('D_CARDID').AsString;
edtRKrxm.Text := tblCard.FieldByName('D_KRXM').AsString;
edtRZjhm.Text := tblCard.FieldByName('D_ZJHM').AsString;
edtRZe.Text := tblCard.FieldByName('D_ZE').AsString;
edtRJe.Text := tblCard.FieldByName('D_JE').AsString;
edtRYe.Text := tblCard.FieldByName('D_YE').AsString;
edtRXkr.Text := tblCard.FieldByName('D_XKR').AsString;
end;
finally
FreeMem(OutBuf);
//ICDown;
ExitComm;
end;
end;
procedure TIcCardForm.edtWriteCardClick(Sender: TObject);
var
st : SmallInt;
begin
if not IsValid then Exit;
Je := StrToFloat(edtWCardJe.Text);
if Je<=0 then
begin
ShowMessage('写卡金额必须大于零!');
Exit;
end;
try
InitStatus(PORTNUM);
if not IsCardExists then
begin
memWrite.Lines.Add('请插入贵宾卡!');
Exit;
end;
//if IC_CheckPass_4442hex(IcDev,PChar(Pass_Word))=0 then
if CheckPass then
begin
InBuf := edtWCardId.Text;
st := IC_Write(IcDev,32,6,PChar(InBuf));
if st <> 0 then
raise Exception.Create('写卡错误!');
st := IC_Write_Float(IcDev,38,Je);
if st <> 0 then
raise Exception.Create('写卡错误!');
memWrite.Lines.Add('写卡成功');
end;
tblCard.Insert;
tblCard.FieldByName('D_CARDID').AsString := edtWCardId.Text;
tblCard.FieldByName('D_KRXM').AsString := edtWKrxm.Text;
tblCard.FieldByName('D_ZJHM').AsString := edtWZjhm.Text;
tblCard.FieldByName('D_XKR').AsString := edtWXkr.Text;
tblCard.FieldByName('D_ZE').AsCurrency := Je;
tblCard.FieldByName('D_YE').AsCurrency := Je;
tblCard.FieldByName('D_XKRQ').AsDateTime := Date;
tblCard.FieldByName('D_XKSJ').AsDateTime := Time;
tblCard.Post;
UpdateKrjz(edtWKrxm.Text);
CardData.InsertYjk(YJLX_GB,YJBZ_GB+' '+edtWCardId.Text,JE,0,0);
finally
//IcDown;
ExitComm;
end;
end;
procedure TIcCardForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// ExitComm;
tblCard.Close;
end;
procedure TIcCardForm.FormShow(Sender: TObject);
var
IniFile: TIniFile;
begin
if (not CzyDl)or(not CardData.CheckYgqx(CZY.CzyBh,'贵宾卡管理系统')) then
Application.Terminate;
Caption := '贵宾卡管理系统(操作员:' + CZY.CzyXm+')';
APP_DIR := ExtractFilePath(Application.ExeName);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -