📄 card_inicard.~pas
字号:
ToolButton5.Enabled := True;
ScanData;
end;
{取消初始化}
procedure TFrmCard_IniCard.BitBtn2Click(Sender: TObject);
var
rq: TDate;
IcKh, MachineNo, CardStatus, CzyName,CardNo: string;
MaxNum:integer;
begin
PublicUnit.IfDeleteClick := True;
if MessageDlg('此操作将会清除售卡信息表中的数据,是否继续?',
mtconfirmation, mbokcancel, 0) = mrcancel then
Exit;
{删除记录时确保卡片在读写器中}
if not ReadKh(CardNo, Comhm, Pchar(PassWord1)) then
begin
ShowMessage('请插入卡片!');
Exit;
end;
CardNo:=Trim(CardNo);
if not FindNeareastRecord(CardNo,MaxNum) then Exit;
if MaxNum=-100 then Exit;
if ((CardSell_DataModule.ADOQuery2.FieldByName('序号').AsInteger<>MaxNum) or
(CardSell_DataModule.ADOQuery2.FieldByName('IC卡号').AsString <>Trim(CardNo))) then
begin
ShowMessage('此条记录不是最新插入的,系统无法删除该记录!');
Exit;
end;
with CardSell_DataModule.ADOQuery2 do
begin
rq := StrToDate(DateTimeToStr(Fields[0].AsDateTime));
IcKh := (Fields[1].AsString);
MachineNo := (Fields[10].AsString);
CardStatus := Trim(Fields[7].AsString);
CzyName := Trim(Fields[9].AsString);
end;
if not DeleteFromDB(rq, IcKh, MachineNo, CardStatus, CzyName) then
begin
ShowMessage('删除售卡信息表失败!');
Exit;
end;
if not DeleteFromSubDB(rq, IcKh, MachineNo, Cardstatus, CzyName) then
begin
ShowMessage('删除售卡信息子表失败');
Exit;
end;
//加入将卡恢复到操作前的状态
//returnvalue:=ReadFromDll('intialize',comh,pass);
//清除有效期和余额
//returnvalue:=ReadFromDll('clear',comh,pass);
ToolButton5.Enabled:=False;
ScanData;
end;
procedure TFrmCard_IniCard.DBEdit1DblClick(Sender: TObject);
var
Rq: TDate;
begin
if DBEdit1.DataSource.DataSet.State in [dsEdit, dsInsert] = False then
Exit;
{DI_DfmDBCalendar := TDI_DfmDBCalendar.Create(Application, nil,
TDBEdit(Sender),
'DBEdit');
with DI_DfmDBCalendar do
begin
Width := 400;
ShowModal;
Free;
end;}
PZ_RqXz.SetWork(Rq);
DBEdit1.Field.Value := Rq;
end;
procedure TFrmCard_IniCard.DBEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ((Sender is TDBEdit) and (Key = VK_RETURN)) then
begin
if TDBEdit(Sender).Tag = 8 then
begin
if TDBEdit(Sender).DataSource.DataSet <> nil then
with TDBEdit(Sender).DataSource.DataSet do
begin
Next;
DBEdit1.SetFocus;
if EOF and CanModify then
Append;
end;
end
else
perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
procedure TFrmCard_IniCard.BitBtn3Click(Sender: TObject);
begin
Close;
end;
procedure TFrmCard_IniCard.DBEdit1Exit(Sender: TObject);
begin
if DBEdit1.DataSource.DataSet.State in [dsEdit, dsInsert] = False then
Exit;
CardSell_DataModule.ADOQuery2.FieldByName('操作员姓名').AsString :=
Trim(FrmMain.UserName);
CardSell_DataModule.ADOQuery2.FieldByName('卡片状态').AsString := '未使用';
end;
procedure TFrmCard_IniCard.DBEdit2Exit(Sender: TObject);
begin
if DBEdit1.DataSource.DataSet.State in [dsEdit, dsInsert] = False then
Exit;
if TEdit(Sender).Text = '' then
begin
ShowMessage(TEdit(Sender).Hint + '字段不能为空!');
TEdit(Sender).SetFocus;
Exit;
end;
if TEdit(Sender).Tag = 7 then
DBEdit7Enter(Self);
end;
procedure TFrmCard_IniCard.DBEdit7Enter(Sender: TObject);
var
CardValue: Double;
begin
if DBEdit1.DataSource.DataSet.State in [dsEdit, dsInsert] = False then
Exit;
CardValue := StrToFloat(Trim(DBComboBox2.Text));
with CardSell_DataModule.ADOQuery2 do
begin
FieldByName('卡片面值').AsString := FloatToStr(CardValue);
if (CardValue -
FieldByName('押金').AsFloat) < 0 then
begin
ShowMessage('押金不能大于卡片面值!');
FieldByName('存款金额').AsFloat := 0;
Exit;
end
else
FieldByName('存款金额').AsFloat :=
CardValue -
FieldByName('押金').AsFloat;
end;
end;
procedure TFrmCard_IniCard.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
if Button = nbInsert then
begin
DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast,
nbCancel];
ToolButton4.Enabled := False;
ToolButton5.Enabled := False;
GetIniValue;
end;
if Button=nbCancel then
begin
ToolButton4.Enabled := False;
ToolButton5.Enabled := False;
end;
end;
//设置默认选项(售卡机编码,押金)
procedure TFrmCard_IniCard.BitBtn4Click(Sender: TObject);
begin
SetValue;
end;
procedure TFrmCard_IniCard.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if DBEdit1.DataSource.DataSet.State in [dsEdit, dsInsert] = False then
Exit;
if Key = 40 then
begin
CardSell_DataModule.ADOQuery2.Append;
GetIniValue;
end;
end;
procedure TFrmCard_IniCard.DBEdit3DblClick(Sender: TObject);
var
ADataSet: TDataSet;
DicName: string;
TemporaryTableNames: TStrings;
DI_DfmDBDictionery: TDI_DfmDBDictionery;
begin
ADataSet := TDBEdit(Sender).DataSource.DataSet;
if not (ADataSet.State in [dsEdit, dsInsert]) then
Exit;
if TDBEdit(Sender).Tag = 7 then
Exit;
DicName := 'Dic_' + Trim(TDbEdit(Sender).Field.FieldName);
DI_DfmDataModule1.AnotherDBADOConnection.Close;
DI_DfmDataModule1.AnotherDBADOConnection.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + FrmMain.Dbuser
+
';Password=' + FrmMain.DBPass + ';Initial Catalog=' + FrmMain.DbName +
';Data Source=' + FrmMain.ServerName;
TemporaryTableNames := TStringList.Create;
DI_DfmDataModule1.AnotherDBADOConnection.GetTableNames(TemporaryTableNames,
False);
if TemporaryTableNames.IndexOf(DicName) = -1 then
begin
if MessageDlg('没有字典,是否创建?', mtConfirmation, mbOKCancel, 0) =
mrCancel then
Exit;
with DI_DfmDataModule1.DictioneryADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ' + DicName);
Sql.Add('(ID varChar (10),DICTIONARY varChar(50))');
try
ExecSql;
except
ShowMessage('error');
Exit;
end;
end;
end;
DI_DfmDBDictionery := TDI_DfmDBDictionery.Create(Self, DicName, DBGrid1,
TDBEdit(Sender), 'DBEdit');
DI_DfmDBDictionery.ShowModal;
DI_DfmDBDictionery.Free;
TemporaryTableNames.Free;
end;
procedure TFrmCard_IniCard.DBEdit3Change(Sender: TObject);
begin
if (CardSell_DataModule.ADOQuery2.FieldByName('卡片类型').AsString = '') or
(CardSell_DataModule.ADOQuery2.FieldByName('卡片面值').AsString = '') then
Exit;
if (PublicUnit.IfSaveClick) or (PublicUnit.IfDeleteClick) then
Exit;
//GetCardNo;
DBEdit7Enter(Sender);
end;
procedure TFrmCard_IniCard.DBEdit5DblClick(Sender: TObject);
var
ADataSet: TDataSet;
DicName: string;
TemporaryTableNames: TStrings;
DI_DfmDBDictionery: TDI_DfmDBDictionery;
begin
ADataSet := TDBEdit(Sender).DataSource.DataSet;
if not (ADataSet.State in [dsEdit, dsInsert]) then
Exit;
DicName := 'Dic_' + Trim(TDbEdit(Sender).Field.FieldName);
DI_DfmDataModule1.AnotherDBADOConnection.Close;
DI_DfmDataModule1.AnotherDBADOConnection.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + FrmMain.Dbuser
+
';Password=' + FrmMain.DBPass + ';Initial Catalog=' + FrmMain.DbName +
';Data Source=' + FrmMain.ServerName;
TemporaryTableNames := TStringList.Create;
DI_DfmDataModule1.AnotherDBADOConnection.GetTableNames(TemporaryTableNames,
False);
if TemporaryTableNames.IndexOf(DicName) = -1 then
begin
if MessageDlg('没有字典,是否创建?', mtConfirmation, mbOKCancel, 0) =
mrCancel then
Exit;
with DI_DfmDataModule1.DictioneryADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ' + DicName);
Sql.Add('(ID varChar (10),DICTIONARY varChar(50) not null Primary Key)');
try
ExecSql;
except
ShowMessage('error');
Exit;
end;
end;
end;
DI_DfmDBDictionery := TDI_DfmDBDictionery.Create(Self, DicName, DBGrid1,
TDBEdit(Sender), 'DBEdit');
DI_DfmDBDictionery.ShowModal;
DI_DfmDBDictionery.Free;
TemporaryTableNames.Free;
end;
procedure TFrmCard_IniCard.Button1Click(Sender: TObject);
begin
Card_ChangePsw.SetWork;
end;
function TFrmCard_IniCard.GetIcKh(CardLx, CardValue: string; var First:
string; var Second: string): Boolean;
var
ti: TInifile;
begin
Result := False;
ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\System.ini');
First := ti.ReadString('卡类型首位对照表', Trim(CardLx), '0');
if First = '0' then
begin
ShowMessage('读取卡片类型信息错误!');
Exit;
end;
ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\System.ini');
Second := ti.ReadString('卡面值首位对照表', Trim(CardValue), '0');
if Second = '0' then
begin
ShowMessage('读取卡片面值信息错误!');
Exit;
end;
Result := True;
end;
procedure TFrmCard_IniCard.DBComboBox2Change(Sender: TObject);
begin
{if OldCardFlag then {老卡保留原卡号}
{begin
CardNo:=CardSell_DataModule.ADOQuery2.FieldByName('IC卡号').AsString;
GetPreCardXx(CardNo);
end
else{新卡,根据类型和面值自动生成卡号}
{ if not ChangeKh(Trim(DBComboBox1.Text),Trim(DBComboBox2.Text)) then Exit;}
DBEdit7Enter(Self);
end;
procedure TFrmCard_IniCard.Button2Click(Sender: TObject);
var
Pass2: string;
returnvalue, Comh: smallint;
pass: Pchar;
ti1: TIniFile;
begin
ti1 := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
Pass2 := ti1.ReadString('默认选项', 'Mima', '55555');
Pass2 := UnEncryFunc(Trim(Pass2));
Comh := ti1.ReadInteger('默认选项', 'Port', 0);
pass := Pchar(Trim(Pass2));
returnvalue := ReadFromDll('checkpass', Comh, pass);
if returnvalue <> 1 then
begin
ShowMessage('密码校验错误!');
Exit;
end;
//returnvalue := WriteToCard(pass, Comhm, Pchar('00000000'), Pchar('00000000'), '04',
// '0000', '00', '0');
returnvalue := ReadFromDll('intialize', Comh, pass);
if returnvalue <> 1 then
begin
ShowMessage('写卡错误!');
Exit;
end
else
ShowMessage('清空卡号成功!');
end;
procedure TFrmCard_IniCard.SetReadOnlyTrue;
begin
DBComboBox1.ReadOnly:=True;
DBComboBox2.ReadOnly:=True;
DBEdit3.ReadOnly:=True;
end;
procedure TFrmCard_IniCard.SetReadOnlyFalse;
begin
DBComboBox1.ReadOnly:=False;
DBComboBox2.ReadOnly:=False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -