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

📄 qt_dsk.pas

📁 汽配前台收费,一个具有详细功能的小系统
💻 PAS
字号:
unit qt_dsk;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Mask, StdCtrls, Buttons, ExtCtrls, Db, DBTables, Printers;

type
  Tfrm_dsk = class(TForm)
    pe_edit: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    txt_cx: TEdit;
    txt_dw: TEdit;
    combo_fs: TComboBox;
    Panel4: TPanel;
    cmd_new: TBitBtn;
    cmd_edit: TBitBtn;
    cmd_save: TBitBtn;
    cmd_cancel: TBitBtn;
    cmd_del: TBitBtn;
    cmd_print: TBitBtn;
    txt_time: TMaskEdit;
    Label1: TLabel;
    txt_cph: TEdit;
    txt_je: TEdit;
    Label6: TLabel;
    sp_insert_into_dsk: TStoredProc;
    qe_jy: TQuery;
    combo_p: TComboBox;
    sp_insert_into_sj: TStoredProc;
    //
    procedure controlKeyPress1(Sender: TObject; var Key: Char);
    procedure controlKeyPress2(Sender: TObject; var Key: Char);
    procedure ControlChanged(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cmd_newClick(Sender: TObject);
    procedure cmd_saveClick(Sender: TObject);
    procedure cmd_delClick(Sender: TObject);
    procedure cmd_printClick(Sender: TObject);
    procedure cmd_cancelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure cmd_editClick(Sender: TObject);
  private
    { Private declarations }
    cur_state: integer;
    //
    procedure controlSetFocus(intpos: integer);
    function RuleCheck: integer;
    function SetNewBH1(intKind: integer): string;
    procedure NewInit;
    procedure SaveInit;
    procedure CancelInit;
    procedure DelInit;
    procedure ExeProc(intPos: integer);
  public
    { Public declarations }
    int_query: integer;
  end;

var
  frm_dsk: Tfrm_dsk;

implementation

{$R *.DFM}

uses
  log, main, print, q_dsk;

function Tfrm_dsk.SetNewBH1(intKind: integer): string;
var
  intR_m, intR_d: integer;
  stryear, strmonth, strday: string;
  year1, month1, day1: Word;
  strm, strd: string;
  strResult: string;
begin
  DecodeDate(Now, year1, month1, day1);
  stryear := IntToStr(year1);
  strmonth := Format('%2.2d', [month1]);
  strday := Format('%2.2d', [day1]);
  //
  qe_jy.Close;
  qe_jy.SQL.Clear;
  qe_jy.SQL.Add('SELECT * FROM SJ_SUM WHERE SJ_YEAR = ' + IntToStr(year1) + ' AND SJ_MONTH = ' + IntToStr(month1) + ' AND SJ_DAY = ' + IntToStr(day1) + ' AND SJ_KIND = ' + IntToStr(intKind) + ' ');
  qe_jy.Open;
  qe_jy.Last;
  intR_d := qe_jy.RecordCount;
  //
  qe_jy.Close;
  qe_jy.SQL.Clear;
  qe_jy.SQL.Add('SELECT * FROM SJ_SUM WHERE SJ_YEAR = ' + IntToStr(year1) + ' AND SJ_MONTH = ' + IntToStr(month1) + ' AND SJ_KIND = ' + IntToStr(intKind) + ' ');
  qe_jy.Open;
  qe_jy.Last;
  intR_m := qe_jy.RecordCount;
  qe_jy.Close;
  //
  if (intR_m = 0) and (intR_d = 0) then begin
    strResult := stryear + strmonth + strday + '-' + '001' + '-' + '001';
  end else if intR_m = 0 then begin
    strResult := stryear + strmonth + strday + '-' + '001' + '-' + '001';
  end else if intR_d = 0 then begin
    intR_m := intR_m + 1;
    strm := Format('%3.3d', [intR_m]);
    strResult := stryear + strmonth + strday + '-' + strm + '-' + '001';
  end else begin
    intR_m := intR_m + 1;
    intR_d := intR_d + 1;
    strm := Format('%3.3d', [intR_m]);
    strd := Format('%3.3d', [intR_d]);
    strResult := stryear + strmonth + strday + '-' + strm + '-' + strd;
  end;
  //
  sp_insert_into_sj.ParamByName('@iyear').Value := year1;
  sp_insert_into_sj.ParamByName('@imonth').Value := month1;
  sp_insert_into_sj.ParamByName('@iday').Value := day1;
  sp_insert_into_sj.ParamByName('@ikind').Value := intKind;
  sp_insert_into_sj.ExecProc;
  //
  Result := strResult;
end;

procedure Tfrm_dsk.ExeProc(intPos: integer);
var
  f_je: Double;
begin
  if intPos = 1 then begin
    f_je := StrToFloat(Trim(txt_je.Text));
    f_je := Int(f_je) + Round((Frac(f_je)*100))/100;
    //
    sp_insert_into_dsk.ParamByName('@ipos').Value := 0;
    sp_insert_into_dsk.ParamByName('@ids_time').Value := Trim(txt_time.EditText);
    sp_insert_into_dsk.ParamByName('@ids_cx').Value := Trim(txt_cx.Text);
    sp_insert_into_dsk.ParamByName('@ids_cph').Value := Trim(txt_cph.Text);
    sp_insert_into_dsk.ParamByName('@ids_dw').Value := Trim(txt_dw.Text);
    sp_insert_into_dsk.ParamByName('@ids_je').Value := f_je;
    sp_insert_into_dsk.ParamByName('@ids_fs').Value := Trim(combo_fs.Text);
    sp_insert_into_dsk.ExecProc;
  end else if intPos = 2 then begin
    sp_insert_into_dsk.ParamByName('@ipos').Value := int_query;
    sp_insert_into_dsk.ParamByName('@ids_time').Value := frm_log.controlDate(DateToStr(Date()));
    sp_insert_into_dsk.ParamByName('@ids_cx').Value := '';
    sp_insert_into_dsk.ParamByName('@ids_cph').Value := '';
    sp_insert_into_dsk.ParamByName('@ids_dw').Value := '';
    sp_insert_into_dsk.ParamByName('@ids_je').Value := 0;
    sp_insert_into_dsk.ParamByName('@ids_fs').Value := '';
    sp_insert_into_dsk.ExecProc;
  end;
end;

procedure Tfrm_dsk.NewInit;
begin
  cur_state := 1;
  //
  pe_edit.Enabled := True;
  txt_time.EditText := frm_log.controlDate(DateToStr(Date()));
  txt_cx.Text := '';
  txt_cph.Text := '';
  txt_dw.Text := '';
  txt_je.Text := '';
  combo_fs.ItemIndex := -1;
  //
  txt_time.SetFocus;
  //
  cmd_new.Enabled := False;
  cmd_edit.Enabled := False;
  cmd_save.Enabled := False;
  cmd_cancel.Enabled := True;
  cmd_del.Enabled := False;
  cmd_print.Enabled := False;
  //
  cmd_save.Tag := 0;
end;

procedure Tfrm_dsk.SaveInit;
begin
  pe_edit.Enabled := False;
  //
  cmd_new.Enabled := False;
  cmd_edit.Enabled := False;
  cmd_save.Enabled := False;
  cmd_cancel.Enabled := False;
  cmd_del.Enabled := True;
  cmd_print.Enabled := True;
  //
  cmd_save.Tag := 1;
end;

procedure Tfrm_dsk.CancelInit;
begin
  txt_time.Text := '';
  txt_cx.Text := '';
  txt_cph.Text := '';
  txt_dw.Text := '';
  txt_je.Text := '';
  combo_fs.ItemIndex := -1;
  //
  pe_edit.Enabled := False;
  //
  cmd_new.Enabled := True;
  qe_jy.Close;
  qe_jy.SQL.Clear;
  qe_jy.SQL.Add('SELECT * FROM QT_DSK WHERE DS_FK_BS = 0');
  qe_jy.Open;
  qe_jy.First;
  if (qe_jy.Bof) and (qe_jy.Eof) then
    cmd_edit.Enabled := False
  else
    cmd_edit.Enabled := True;
  cmd_save.Enabled := False;
  cmd_cancel.Enabled := False;
  cmd_del.Enabled := False;
  cmd_print.Enabled := False;
  //
  cmd_save.Tag := 0;
end;

procedure Tfrm_dsk.DelInit;
begin
  if MessageBox(Handle, '确实要删除新建业务吗?', '沈阳信德', MB_ICONQUESTION or MB_OKCANCEL) = ID_OK then begin
    txt_time.Text := '';
    txt_cx.Text := '';
    txt_cph.Text := '';
    txt_dw.Text := '';
    txt_je.Text := '';
    combo_fs.ItemIndex := -1;
    //
    cmd_new.Enabled := True;
    qe_jy.Close;
    qe_jy.SQL.Clear;
    qe_jy.SQL.Add('SELECT * FROM QT_DSK WHERE DS_FK_BS = 0');
    qe_jy.Open;
    qe_jy.First;
    if (qe_jy.Bof) and (qe_jy.Eof) then
      cmd_edit.Enabled := False
    else
      cmd_edit.Enabled := True;
    cmd_save.Enabled := False;
    cmd_cancel.Enabled := False;
    cmd_del.Enabled := False;
    cmd_print.Enabled := False;
    //
    cmd_save.Tag := 0;
  end;
end;

function Tfrm_dsk.RuleCheck: integer;
var
  v: Double;
  code: integer;
begin
  Result := 0;
  if Trim(txt_time.EditText) = '0000-00-00' then begin
    MessageBox(Handle, '请确定代收时间', '沈阳信德', MB_ICONQUESTION or MB_OK);
    txt_time.SetFocus;
    Result := 1;
    Exit;
  end;
  if (Trim(txt_cx.Text) = '') or (Trim(txt_cph.Text) = '') then begin
    MessageBox(Handle, '请确定车型车牌号', '沈阳信德', MB_ICONQUESTION or MB_OK);
    txt_cx.SetFocus;
    Result := 1;
    Exit;
  end;
  if (Trim(txt_dw.Text) = '') then begin
    MessageBox(Handle, '请确定收款单位', '沈阳信德', MB_ICONQUESTION or MB_OK);
    txt_dw.SetFocus;
    Result := 1;
    Exit;
  end;
  //
  Val(Trim(txt_je.Text), v, code);
  if (code <> 0) or (v < 0.01) then begin
    MessageBox(Handle, '代收款无效', '沈阳信德', MB_ICONQUESTION or MB_OK);
    txt_je.SetFocus;
    Result := 1;
    Exit;
  end;
  if combo_fs.ItemIndex = -1 then begin
    MessageBox(Handle, '请确定收款方式', '沈阳信德', MB_ICONQUESTION or MB_OK);
    combo_fs.SetFocus;
    Result := 1;
    Exit;
  end;
end;

procedure Tfrm_dsk.ControlChanged(Sender: TObject);
begin
  if cur_state = 1 then begin
    cmd_new.Enabled := False;
    cmd_edit.Enabled := False;
    cmd_save.Enabled := True;
    cmd_cancel.Enabled := True;
    cmd_del.Enabled := False;
    cmd_print.Enabled := False;
  end;
end;

procedure Tfrm_dsk.controlSetFocus(intpos: integer);
begin
  case intpos of
    1: txt_cx.SetFocus;
    2: txt_cph.SetFocus;
    3: txt_dw.SetFocus;
    4: txt_je.SetFocus;
    5: combo_fs.SetFocus;
  end;
end;

procedure Tfrm_dsk.controlKeyPress2(Sender: TObject; var Key: Char);
begin
  if not (((Key >= '0') and (Key <= '9')) or (Ord(Key) = 8) or (Ord(Key) = 46) or (Ord(Key) = 13)) then
    Key := Chr(0);
  if Ord(Key) = 13 then controlSetFocus(TWinControl(Sender).Tag);
end;

procedure Tfrm_dsk.controlKeyPress1(Sender: TObject; var Key: Char);
begin
  if Ord(Key) = 13 then controlSetFocus(TWinControl(Sender).Tag);
end;

procedure Tfrm_dsk.FormShow(Sender: TObject);
begin
  cur_state := 0;
  //
  qe_jy.Close;
  qe_jy.SQL.Clear;
  qe_jy.SQL.Add('SELECT * FROM QT_DSK WHERE DS_FK_BS = 0');
  qe_jy.Open;
  qe_jy.First;
  //
  cmd_new.Enabled := True;
  if (qe_jy.Bof) and (qe_jy.Eof) then
    cmd_edit.Enabled := False
  else
    cmd_edit.Enabled := True;
  //
  frm_main.mu_yw_gl_dsk.Enabled := False;
  frm_main.current_handle := Handle;
end;

procedure Tfrm_dsk.cmd_newClick(Sender: TObject);
begin
  NewInit;
end;

procedure Tfrm_dsk.cmd_saveClick(Sender: TObject);
var
  intResult: integer;
begin
  intResult := RuleCheck;
  if intResult = 1 then
    Exit
  else
    SaveInit;
end;

procedure Tfrm_dsk.cmd_delClick(Sender: TObject);
begin
  DelInit;
end;

procedure Tfrm_dsk.cmd_printClick(Sender: TObject);
var
  m_fk: Double;
  str_bh: string;
begin
  combo_p.Items.Clear;
  combo_p.items.Assign(Printer.Printers);
  if combo_p.Items.Count = 0 then begin
    MessageBox(Handle, '没有可用的打印机,请添加打印机', '沈阳信德', MB_ICONQUESTION or MB_OK);
    Exit;
  end;
  //
  if MessageBox(Handle, '确实要结算吗?', '沈阳信德', MB_ICONQUESTION or MB_OKCANCEL) = ID_OK then begin
    m_fk := StrToFloat(Trim(txt_je.Text));
    m_fk := Int(m_fk) + Round((Frac(m_fk)*100))/100;
    //
    if cmd_save.Tag = 1 then begin
      cmd_save.Tag := 0;
      ExeProc(1);
      str_bh := SetNewBH1(5);
      frm_print.lbl_cap16.Caption := frm_log.cur_gs_name;
      frm_print.lbl_date16.Caption := frm_log.controlDate(DateToStr(Date()));
      frm_print.lbl_bh16.Caption := 'DS' + str_bh;
      frm_print.lbl_fs16.Caption := combo_fs.Text;
      frm_print.lbl_cx16.Caption := Trim(txt_cx.Text) + ' ' + Trim(txt_cph.Text);
      frm_print.lbl_dw16.Caption := Trim(txt_dw.Text);
      //
      frm_print.lbl_dx16.Caption := frm_log.shiftNum(m_fk);
      frm_print.lbl_xx16.Caption := frm_log.ControlNum(FloatToStr(m_fk)) + '元';
      //
      frm_print.lbl_czr16.Caption := frm_main.user_name;
      frm_print.qr_dsk1.Print;
    end else if cmd_save.Tag = 0 then begin
      ExeProc(2);
      str_bh := SetNewBH1(6);
      frm_print.lbl_cap17.Caption := frm_log.cur_gs_name;
      frm_print.lbl_date17.Caption := frm_log.controlDate(DateToStr(Date()));
      frm_print.lbl_bh17.Caption := 'DH' + str_bh;
      frm_print.lbl_fs17.Caption := combo_fs.Text;
      frm_print.lbl_cx17.Caption := Trim(txt_cx.Text) + ' ' + Trim(txt_cph.Text);
      frm_print.lbl_dw17.Caption := Trim(txt_dw.Text);
      //
      frm_print.lbl_dx17.Caption := frm_log.shiftNum(m_fk);
      frm_print.lbl_xx17.Caption := frm_log.ControlNum(FloatToStr(m_fk)) + '元';
      //
      frm_print.lbl_czr17.Caption := frm_main.user_name;
      frm_print.qr_dsk2.Print;
    end;
    //
    cmd_print.Enabled := False;
    cmd_del.Enabled := False;
    cmd_save.Enabled := False;
    cmd_cancel.Enabled := False;
    cmd_new.Enabled := True;
    //
    qe_jy.Close;
    qe_jy.SQL.Clear;
    qe_jy.SQL.Add('SELECT * FROM QT_DSK WHERE DS_FK_BS = 0');
    qe_jy.Open;
    qe_jy.First;
    if (qe_jy.Bof) and (qe_jy.Eof) then
      cmd_edit.Enabled := False
    else
      cmd_edit.Enabled := True;
  end;
end;

procedure Tfrm_dsk.cmd_cancelClick(Sender: TObject);
begin
  CancelInit;
end;

procedure Tfrm_dsk.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure Tfrm_dsk.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := True;
  //
  if cmd_save.Tag = 1 then begin
    MessageBox(Handle, '尚有新建业务未结算,不能关闭窗体', '沈阳信德', MB_ICONQUESTION or MB_OK);
    CanClose := False;
    Exit;
  end;
  //
  if CanClose then begin
    qe_jy.Close;
    frm_main.mu_yw_gl_dsk.Enabled := True;
    frm_main.current_handle := 0;
    frm_main.Tag := 1;
  end;
end;

procedure Tfrm_dsk.FormDestroy(Sender: TObject);
begin
  qe_jy := nil;
  //
  frm_dsk := nil;
end;

procedure Tfrm_dsk.cmd_editClick(Sender: TObject);
begin
  if not Assigned(frm_q_dsk) then begin
    frm_q_dsk := Tfrm_q_dsk.Create(Application);
    frm_q_dsk.ds_pos := 1;
    int_query := 0;
    frm_q_dsk.ShowModal;
    //
    if int_query = 0 then
      Exit
    else begin
      cmd_new.Enabled := True;
      cmd_edit.Enabled := True;
      cmd_save.Enabled := False;
      cmd_cancel.Enabled := False;
      cmd_del.Enabled := False;
      cmd_print.Enabled := True;
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -