📄 frmnewcards.pas
字号:
unit FrmNewCardS;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, RXDBCtrl, TFlatEditUnit,
TFlatSpinEditUnit, TFlatComboBoxUnit, TFlatButtonUnit,ICCTRL,inifiles;
type
PClockInfo=^TClockInfo;
TClockInfo=record
ID: WORD;
ClockNo: String;
ClockName: String;
Port: WORD;
BaudRate: DWORD;
end;
type
TFrmNewCard = class(TForm)
GroupBox1: TGroupBox;
RxDBGrid1: TRxDBGrid;
GroupBox2: TGroupBox;
Label1: TLabel;
FlatEdit1: TFlatEdit;
Label2: TLabel;
FlatComboBox1: TFlatComboBox;
Label3: TLabel;
Label4: TLabel;
FlatSpinEditInteger2: TFlatSpinEditInteger;
GroupBox3: TGroupBox;
FlatButton1: TFlatButton;
FlatButton2: TFlatButton;
FlatButton3: TFlatButton;
Label5: TLabel;
FlatButton4: TFlatButton;
FlatSpinEditInteger1: TFlatSpinEditFloat;
procedure FlatButton2Click(Sender: TObject);
procedure FlatButton3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FlatButton1Click(Sender: TObject);
procedure FlatButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmNewCard: TFrmNewCard;
implementation
uses DTConnects, MainFRMS;
{$R *.dfm}
function IntToStrLen(Value : Integer; ResultLength :Byte):String;
begin
Result:=IntToStr(Value);
while Length(Result) < Resultlength do
Result:='0'+Result;
Result:=Copy(Result, Length(Result)-ResultLength+1, ResultLength);
end;
procedure TFrmNewCard.FlatButton2Click(Sender: TObject);
begin
FlatEdit1.Text:='';
FlatComboBox1.Text:='';
FlatSpinEditInteger1.Value:=0;
FlatSpinEditInteger2.Value:=0;
end;
procedure TFrmNewCard.FlatButton3Click(Sender: TObject);
begin
self.Close;
end;
procedure TFrmNewCard.FormCreate(Sender: TObject);
var i:integer;
begin
with DTConnect do begin
qryuser.close;
QryUser.SQL.Text:='Select UserName from [User] where ICCardNo ='+chr(39)+'00000'+chr(39);
QryUser.Open;
FlatComboBox1.Clear;
QryUser.First;
for i:=1 to QryUser.RecordCount do begin
FlatComboBox1.Items.Add(QryUser.FieldValues['UserName']);
QryUser.Next;
end;
QryICCard.Close;
QryICCard.SQL.Text:='Select ICCardNo,UserName,CreateTime from UserCard';
QryICCard.Open;
end;
end;
procedure TFrmNewCard.FormClose(Sender: TObject; var Action: TCloseAction);
begin
self.Release;
end;
procedure TFrmNewCard.FlatButton1Click(Sender: TObject);
var hPort: THandle;
pclk: PClockInfo;
CardInfo: TCardInfo;
ReadInfo: TIniFile;
FileName:String;
CardNoStr: String;
Right:boolean;
UserID:Integer;
begin
FileName:=ExtractFilePath(Application.ExeName)+'CardInfo.ini';
ReadInfo:=TIniFile.Create(FileName);
if FlatEdit1.Text ='' then begin
Application.MessageBox('请输入新IC卡的卡编号','操作提示',0+16);
Abort;
end;
if FlatComboBox1.Text='' then begin
Application.MessageBox('请选择开新IC卡的用户','操作提示',0+16);
Abort;
end;
with DTConnect do begin
qrycheck.Close;
QryCheck.SQL.Text:='Select ID from ICCard where ICCardNo = '+chr(39)+FlatEdit1.Text+chr(39);
QryCheck.Open;
if QryCheck.RecordCount >0 then begin
Application.MessageBox('已有相同编号的IC存在,请输入别的编号.','操作提示',0+16);
Abort;
end;
QryUser.Close;
QryUser.SQL.Text:='Select [ID] from [User] WHere [UserName] = '+chr(39)+FlatComboBox1.Text+chr(39);
QryUser.Open;
if QryUser.RecordCount>1 then begin
Application.MessageBox('系统在搜索用户时找到两个同名的,请修改此用户名称后,再进行发新IC卡.在发完IC卡后你可重新将此用户改回原来的名字.在此造成不便,敬请见谅.','操作提示',0+48);
Abort;
end;
UserID:=QryUser.FieldValues['ID'];
QryUser.Close;
CardInfo.CardNo:=StrToIntDef(FlatEdit1.Text, 0);
CardInfo.Times:=StrToIntDef(inttostr(FlatSpinEditInteger2.Value), 0);
CardInfo.Money:=Round(StrToFloat(floattostr(FlatSpinEditInteger1.value))*10);
CardNoStr:=FlatComboBox1.SelText;
StrPCopy(@CardInfo.Name[1],FlatComboBox1.Text);
with ReadInfo do begin
new(pclk);
pclk.ID:=StrToIntDef(ReadString('NewCard','ID',''),1);
pclk.ClockNo:=ReadString('NewCard','DeviceNo','');
pclk.ClockName:=ReadString('NewCard','Devicena','');
pclk.Port:=StrToIntDef(ReadString('NewCard','Port',''),4);
pclk.BaudRate:= StrToIntDef(ReadString('NewCard','Speed','') , 9600);
end;
MainFRM.StatusBar1.Panels[0].Text:='链接到发卡机上...';
hPort:=OpenCommPort(pclk.Port, pclk.BaudRate);
Right:=WriteCardInfo(hPort, @CardInfo);
MainFRM.StatusBar1.Panels[0].Text:='正在写入卡信息...';
if Right then
begin
with DTConnect do begin
ADOCommand1.CommandText:='Execute NewCard '+chr(39)+FlatEdit1.Text+chr(39)+','
+inttostr(UserID)+','
+inttostr(FlatSpinEditInteger1.Precision )+','
+inttostr(FlatSpinEditInteger2.Value);
ADOCommand1.Execute;
end;
Windows.Beep(2500, 150);
Application.MessageBox('写卡号个人信息成功. ','操作提示',0+32);
MainFRM.StatusBar1.Panels[0].Text:='写卡号个人信息成功.';
end else
begin
Application.MessageBox('写卡号个人信息失败. ','操作提示',0+16);
MainFRM.StatusBar1.Panels[0].Text:='写卡号个人信息失败.';
end;
CloseCommPort(hPort);
end;
end;
procedure TFrmNewCard.FlatButton4Click(Sender: TObject);
var hPort: THandle;
pclk: PClockInfo;
CardInfo: TCardInfo;
ReadInfo: TIniFile;
FileName:String;
CardNoStr: String;
Right:boolean;
UserID:Integer;
begin
FileName:=ExtractFilePath(Application.ExeName)+'CardInfo.ini';
ReadInfo:=TIniFile.Create(FileName);
with ReadInfo do begin
new(pclk);
pclk.ID:=StrToIntDef(ReadString('NewCard','ID',''),1);
pclk.ClockNo:=ReadString('NewCard','DeviceNo','');
pclk.ClockName:=ReadString('NewCard','Devicena','');
pclk.Port:=StrToIntDef(ReadString('NewCard','Port',''),4);
pclk.BaudRate:= StrToIntDef(ReadString('NewCard','Speed','') , 9600);
end;
MainFRM.StatusBar1.Panels[0].Text:='链接到发卡机上...';
hPort:=OpenCommPort(pclk.Port, pclk.BaudRate);
MainFRM.StatusBar1.Panels[0].Text:='正在读IC卡信息';
Right:=ReadCardInfo(hPort, @CardInfo);
if right then begin
FlatEdit1.Text:=IntToStrLen(CardInfo.CardNo, 5);
FlatComboBox1.Text:=PChar(@CardInfo.Name[1]);
FlatSpinEditInteger1.Value:=CardInfo.Money/10;
FlatSpinEditInteger2.Value:=CardInfo.Times;
Application.MessageBox('读IC卡信息成功!','操作提示',0+32);
MainFRM.StatusBar1.Panels[0].Text:='读IC卡信息成功!';
end else begin
MainFRM.StatusBar1.Panels[0].Text:='读IC卡信息失败!';
Application.MessageBox('读IC卡信息失败!','操作提示',0+16);
end;
Windows.Beep(2500, 150);
CloseCommPort(hPort);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -