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

📄 card_inicard.~pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 ~PAS
📖 第 1 页 / 共 4 页
字号:
  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 + -