📄 frm_c_kczpas.pas
字号:
unit frm_c_kczpas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ModalForm, Menus, StdCtrls, ExtCtrls, ComCtrls, ChangeImage,
YLabelButton, UTcard, UTyhxx, UErrDisplay;
type
Tfrm_c_kcz = class(TMyModalForm)
LBtnEdit: TLabelB;
BtnEdit: TChangeImg;
BtnHelp: TChangeImg;
LBtnHelp: TLabelB;
BtnInport: TChangeImg;
LBtnInport: TLabelB;
BtnMe: TChangeImg;
LBtnMe: TLabelB;
stb: TStatusBar;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
GroupBox5: TGroupBox;
Label5: TLabel;
Label6: TLabel;
edtCzje: TEdit;
lvczjl: TListView;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
BtnBrowse: TChangeImg;
lblyhbh: TLabel;
lblyhxm: TLabel;
lblCardsn: TLabel;
lblCardye: TLabel;
lblczcs: TLabel;
lblsydate: TLabel;
lblsytype: TLabel;
lblbmmc: TLabel;
Label10: TLabel;
procedure imgCloseButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure edtCzjeKeyPress(Sender: TObject; var Key: Char);
procedure BtnBrowseClick(Sender: TObject);
procedure BtnEditClick(Sender: TObject);
procedure BtnInportClick(Sender: TObject);
procedure BtnHelpClick(Sender: TObject);
procedure BtnMeClick(Sender: TObject);
private
{ Private declarations }
procedure cz(czfs: integer);
procedure IniDate;
public
{ Public declarations }
end;
TReadCardThread = class(TThread)
private
Cardsn: longword;
procedure Execute; override;
procedure ShowCardInf;
end;
var
frm_c_kcz: Tfrm_c_kcz;
implementation
uses UGlobal, frm_c_CzSzpas, frm_c_ksypas, UGeneralFunc;
var
yhcard: Tcard;
yhxx: Tyhxx;
ReadCardThread: TReadCardThread;
ReadCard: boolean = False; //0:无读卡 1:正在读卡 2:正在写卡
Writecard: boolean = false;
CardSign: Integer = 0;
{$R *.dfm}
{ TReadCardThread }
procedure TReadCardThread.Execute;
var
bShow: boolean;
iFailCount: integer;
begin
inherited;
iFailCount := 0;
while not Terminated do
begin
if CardSign = 0 then
begin
bShow := False;
cardsign := 1;
if Cardsn = 0 then
begin
yhcard.yhdk(False);
Cardsn := yhcard.CardSN;
yhxx.GetYhxx(yhcard.Yhbh);
bShow := True;
end
else
begin
if not yhcard.CardExist(CardSn) then
begin
if iFailCount = 1 then
begin
yhcard.yhdk(False);
Cardsn := yhcard.CardSN;
yhxx.GetYhxx(yhcard.Yhbh);
bShow := True;
iFailCount := 0;
end
else
begin
inc(iFailCount);
bShow := False;
end;
end;
end;
cardsign := 0;
sleep(200);
if bShow then
begin
iFailCount := 0;
Synchronize(ShowCardInf);
end;
end;
end;
end;
procedure TReadCardThread.ShowCardInf;
begin
with frm_c_kcz do
begin
if yhcard.RetVal = -1 then
begin
IniDate;
exit;
end;
stb.Panels[1].Text := yhcard.RetMsg;
if yhcard.RetVal = 0 then
stb.Panels[1].Text := '输入金额后点击[充值] 或 按[ENTER]键充值 ';
lblyhbh.caption := yhcard.Yhbh;
lblyhxm.Caption := yhxx.Yhxm;
lblcardsn.Caption := inttostr(yhcard.CardSN);
lblcardye.Caption := trim(format('%12.2f', [yhcard.cardye])) + ' 元';
lblczcs.Caption := inttostr(yhcard.CardTimes);
lblsydate.Caption := datetostr(yhcard.DateLimit);
lblsytype.Caption := inttostr(yhcard.CardType);
lblbmmc.Caption := yhxx.Bjmc;
edtczje.SelectAll;
end;
end;
procedure Tfrm_c_kcz.imgCloseButtonClick(Sender: TObject);
begin
inherited;
ReadCardThread.DoTerminate;
ReadCardThread.Free;
close;
end;
procedure Tfrm_c_kcz.IniDate;
begin
lblyhbh.Caption := '';
lblyhxm.Caption := '';
lblcardsn.Caption := '';
lblcardye.Caption := '';
lblczcs.Caption := '';
lblsydate.Caption := '';
lblsytype.Caption := '';
lblbmmc.Caption := '';
edtczje.Text := '';
stb.Panels[1].Text := '请将IC卡放在发卡器上';
stb.Panels[5].Text := trim(format('%12.2f', [gtSysCs.dMinCzje])) + '元'
+ '----' + trim(format('%12.2f', [gtSyscs.dMaxczje])) + '元';
if gtsyscs.bXjCzPrint then
stb.Panels[3].Text := '是'
else
stb.Panels[3].Text := '否';
end;
procedure Tfrm_c_kcz.FormCreate(Sender: TObject);
begin
inherited;
IniDate;
yhcard := Tcard.Create;
yhxx := Tyhxx.create;
ReadCardThread := TReadCardThread.Create(False);
end;
procedure Tfrm_c_kcz.edtCzjeKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = char(vk_back) then exit;
if (key = #13) and (trim(edtczje.Text) <> '-') then
begin
BtnEditClick(self);
edtczje.SetFocus;
edtczje.SelectAll;
end;
//
if key = '-' then
begin
if length(edtczje.text) > 0 then key := #0;
exit;
end;
//
if ((length(edtczje.text) - pos('.', edtczje.text)) = 2) and (pos('.', edtczje.text) <> 0) then
begin
key := #0;
exit;
end;
//
if (length(edtczje.Text) = 0) or (pos('.', edtczje.text) <> 0) then
begin
if not (key in ['0'..'9']) then key := #0
end
else
begin
if not (key in ['0'..'9', '.']) then key := #0;
end;
end;
procedure Tfrm_c_kcz.BtnBrowseClick(Sender: TObject);
begin
inherited;
if trim(lblsytype.Caption) = '' then
begin
stb.Panels[1].Text := '无卡使用类别显示';
ErrDisplay.ErrPrompt(stb.Panels[1].Text, '');
exit;
end;
if not assigned(frm_c_ksy) then
frm_c_ksy := Tfrm_c_ksy.Create(application);
frm_c_ksy.CardType := strtoint(lblsytype.Caption);
frm_c_ksy.Show;
end;
procedure Tfrm_c_kcz.BtnEditClick(Sender: TObject);
begin
inherited;
if trim(edtczje.Text) = '' then exit;
if copy(edtczje.Text, 1, 1) = '-' then
begin
stb.Panels[1].Text := '如果要冲正请输入负金额后点击[冲正]';
ErrDisplay.ErrPrompt(stb.Panels[1].Text, '');
exit;
end;
cz(1);
end;
procedure Tfrm_c_kcz.cz(czfs: integer);
var
dscye, dCzje: double;
syhxm: string;
sStr: string;
NewItem: Tlistitem;
i: integer;
begin
btnedit.Enabled := False;
edtczje.Enabled := False;
try
dCzje := strtofloat(trim(edtczje.Text));
syhxm := yhxx.Yhxm;
if (abs(dCzje) <= gtsyscs.dMaxCzje) and (abs(dCzje) >= gtsyscs.dMinCzje) then
begin
dscye := yhcard.CardYe;
sStr := '当前用户:' + yhxx.Yhxm + #13#10 +
'充值金额:' + edtczje.Text + #13#10 +
' 请确认';
if application.MessageBox(pchar(sstr), '充值提示', mb_YesNo + mb_iconquestion) = id_Yes then
begin
while CardSign = 1 do ;
cardsign := 1;
if trim(edtczje.Text) = '' then exit;
yhcard.yhcz(czfs, dczje);
if yhcard.RetVal = 0 then
begin
if lvczjl.Items.Count >= 5 then lvczjl.Items[0].Delete;
NewItem := lvczjl.Items.Add;
NewItem.Caption := yhcard.Yhbh;
NewItem.SubItems.Add(syhxm);
NewItem.SubItems.Add(inttostr(yhcard.CardSN));
NewItem.SubItems.Add(trim(format('%12.2f', [yhcard.CardYe - dczje])));
NewItem.SubItems.Add(trim(format('%12.2f', [dczje])));
NewItem.SubItems.Add(trim(format('%12.2f', [yhcard.CardYe])));
NewItem.SubItems.Add(inttostr(yhcard.CardTimes));
NewItem.SubItems.Add(timetostr(time));
NewItem.Selected := True;
stb.Panels[1].Text := '[' + inttostr(yhcard.retval) + ']' + yhcard.RetMsg;
ReadCardThread.Cardsn := 0;
end
else
stb.Panels[1].Text := '[' + inttostr(yhcard.retval) + ']' + yhcard.RetMsg;
end;
end
else
stb.Panels[1].Text := '金额超限';
finally
btnedit.Enabled := True;
edtczje.Enabled := True;
edtczje.SetFocus;
edtczje.SelectAll;
CardSign := 0;
end;
ErrDisplay.ErrPrompt(stb.Panels[1].Text, '');
end;
procedure Tfrm_c_kcz.BtnInportClick(Sender: TObject);
begin
inherited;
if trim(edtczje.Text) = '' then exit;
if copy(edtczje.Text, 1, 1) <> '-' then
begin
stb.Panels[1].Text := '如果要冲正请输入负金额后点击[冲正]';
ErrDisplay.ErrPrompt(stb.Panels[1].Text, '');
exit;
end;
cz(3);
end;
procedure Tfrm_c_kcz.BtnHelpClick(Sender: TObject);
begin
inherited;
HtmlHelp(Handle, gtSyscs.sHelpFileName, $0001, DWORD(PChar('Introduction.htm')));
end;
procedure Tfrm_c_kcz.BtnMeClick(Sender: TObject);
begin
inherited;
frm_c_CzSz := Tfrm_c_CzSz.Create(application);
frm_c_CzSz.ShowModal;
frm_c_CzSz.Free;
stb.Panels[5].Text := trim(format('%12.2f', [gtSysCs.dMinCzje])) + '元'
+ '----' + trim(format('%12.2f', [gtSyscs.dMaxczje])) + '元';
if gtsyscs.bXjCzPrint then
stb.Panels[3].Text := '是'
else
stb.Panels[3].Text := '否';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -