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

📄 urinvoice.pas

📁 主要介绍超市管理系统的后台系统,后台程序是系统初始化和系统维护最常使用的一部分程序,主要任务是建产基本数据,进出货盘点和打印报表.后台程序主要负责的都是管理上的功能,当后台建立完整的数据后,前台才能顺
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit URINVOICE;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, ExtCtrls, Buttons, Spin, SPComm, Mask, Menus;

type
  TFRINVOICE = class(TForm)
    PageControl: TPageControl;
    PAGE_A: TTabSheet;
    TabSheet2: TTabSheet;
    P_TEST_TEXT: TBitBtn;
    Comm1: TComm;
    P_TEXT: TEdit;
    Label8: TLabel;
    BTN_XF: TBitBtn;
    Memo: TMemo;
    Label17: TLabel;
    BTN_XG: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BTN_XB: TBitBtn;
    BTN_CASHBOX: TButton;
    Label2: TLabel;
    P_CTRL: TEdit;
    BitBtn6: TBitBtn;
    Comm2: TComm;
    GroupBox1: TGroupBox;
    CD_PORT: TRadioGroup;
    CD_CASH: TRadioGroup;
    GroupBox2: TGroupBox;
    Label10: TLabel;
    Label3: TLabel;
    ED_PORT: TRadioGroup;
    ED_DELAY: TSpinEdit;
    ED_LPTVALUE: TEdit;
    Label1: TLabel;
    Label4: TLabel;
    ED_MAXROW: TSpinEdit;
    ED_LPTADDR: TEdit;
    ED_PRINTER: TRadioGroup;
    BTNCASHBOXTEST: TButton;
    Panel1: TPanel;
    Label5: TLabel;
    CD_INTTIME: TSpinEdit;
    BTNESC: TBitBtn;
    BTNQUT: TBitBtn;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    procedure P_TEST_TEXTClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure BTN_XFClick(Sender: TObject);
    procedure BTN_XGClick(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BTN_XBClick(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BTN_CASHBOXClick(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BTNCASHBOXTESTClick(Sender: TObject);
    procedure CD_CASHClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BTNQUTClick(Sender: TObject);
    procedure BTNESCClick(Sender: TObject);
    procedure ED_PRINTERClick(Sender: TObject);
    procedure ED_DELAYChange(Sender: TObject);
    procedure ED_PORTClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

   // 系统设置
   PROCEDURE INVOICE_CHANGE_VARIABLE;   // 当使用者改变设置时可更正变量值
   PROCEDURE INVOICE_OPEN_PORT;         // 打开机器要输出的Port
   PROCEDURE INVOICE_READ_INI;          // 读取上次的环境设置值
   PROCEDURE INVOICE_WRITE_INI;         // 将环境设置值存盘

   // 打印控制
   PROCEDURE INVOICE_IV_TITLE;                       // 输出发票机打印前导控制命令
   PROCEDURE INVOICE_IV_TEXT(EXPRESSION:STRING);     // 输出文字至发票机   - 含跳行
   PROCEDURE INVOICE_IV_CTRL(EXPRESSION:STRING);     // 输出打印控制命令至发票机 - 含跳行
   PROCEDURE INVOICE_IV_CTRLX(EXPRESSION:STRING);    // 输出打印控制命令至发票机 - 不含跳行

   // 前台发票打印控制
   PROCEDURE INVOICE_IV_INV_TEXT(EXPRESSION:STRING);        // 前台发票, 单行文字
   PROCEDURE INVOICE_IV_INV_LINEFEED;                       // 前台发票, 空出一行(跳行)
   PROCEDURE INVOICE_IV_PAGEFEED;                           // 前台发票, 跳页, 含盖章
   PROCEDURE INVOICE_IV_LEFTLINE_TEXT(EXPRESSION:STRING);   // 前台发票, 只打印收执联(二联发票机)

   // 其它控制
   PROCEDURE INVOICE_STAMPING;     //盖印章
   PROCEDURE INVOICE_CUT_PAPER;    //切纸
   PROCEDURE INVOICE_OPEN_CASHBOX; //打开钱箱



var
  FRINVOICE: TFRINVOICE;

  // 设置用变量 - 暂存
  INVOICE_OUT_PORT    :STRING;        // 输出的连接口
  INVOICE_TF          :TEXTFILE;      // 存盘时的INI 声明

  // 设置用变量
  INVOICE_PRINTER     :INTEGER;       // 打印机种类
  INVOICE_PORT        :INTEGER;       // 输出的连接口
  INVOICE_DELAY       :STRING;        // 输出时的延迟值
  INVOICE_MAXROW      :STRING;        // 发票可打印的最大行数
  INVOICE_LPTVALUE    :STRING;        // 检查 LPT 时,是否有接发票机
  INVOICE_LPTADDR     :STRING;        // 检查 LPT 时,是否有接发票机
  CASHDRAWER_CASH     :INTEGER;       // 钱箱的种类
  CASHDRAWER_PORT     :INTEGER;       // 钱箱输出的连接口
  CASHDRAWER_INTTIME  :INTEGER;       // 接RS232的钱箱输出时触发次数

  //计数器  - 暂存
  INVOICE_COUNTER     :INTEGER;       // 发票打印时,记录已打印几行
  INVOICE_FIRST_PRINT :BOOLEAN;       // 发票机是否第一次打印


implementation

USES UN_UTL, FM_UTL, SYSINI;

{$R *.DFM}

PROCEDURE INVOICE_CHANGE_VARIABLE;
BEGIN
  INVOICE_PRINTER     := FRINVOICE.ED_PRINTER .ItemIndex;
  INVOICE_PORT        := FRINVOICE.ED_PORT    .ItemIndex;
  INVOICE_DELAY       := FRINVOICE.ED_DELAY   .TEXT;
  INVOICE_MAXROW      := FRINVOICE.ED_MAXROW  .TEXT;
  INVOICE_LPTVALUE    := FRINVOICE.ED_LPTVALUE.TEXT;
  INVOICE_LPTADDR     := FRINVOICE.ED_LPTADDR .TEXT;
  CASHDRAWER_CASH     := FRINVOICE.CD_CASH    .ItemIndex;
  CASHDRAWER_PORT     := FRINVOICE.CD_PORT    .ItemIndex;
  CASHDRAWER_INTTIME  := FRINVOICE.CD_INTTIME .VALUE ;
  INVOICE_FIRST_PRINT := FALSE;
END;

PROCEDURE INVOICE_OPEN_PORT;
VAR C : TCOMM;
BEGIN
  IF INVOICE_PORT = 0 THEN INVOICE_OUT_PORT := 'COM1';
  IF INVOICE_PORT = 1 THEN INVOICE_OUT_PORT := 'COM2';
  IF INVOICE_PORT = 2 THEN INVOICE_OUT_PORT := 'COM3';
  IF INVOICE_PORT = 3 THEN INVOICE_OUT_PORT := 'COM4';
  IF INVOICE_PORT = 4 THEN INVOICE_OUT_PORT := 'LPT1';
  C          := TCOMM.Create(FRINVOICE);   // 使用内部式声明, 结束后自动清除资源
  C.CommName := INVOICE_OUT_PORT;          // 先使用 RS232 组件, 将输出端口开通
  C.StartComm;
  C.StopComm;
END;

PROCEDURE INVOICE_READ_INI;
BEGIN
  IF FileExists(FILEPATH_INVOICE) = TRUE  THEN
     BEGIN
     INVOICE_PRINTER     := INI_LOAD_INT (FILEPATH_INVOICE,'INVOICE_PRINTER'    ,0    );
     INVOICE_PORT        := INI_LOAD_INT (FILEPATH_INVOICE,'INVOICE_PORT'       ,0    );
     INVOICE_DELAY       := INI_LOAD_STR (FILEPATH_INVOICE,'INVOICE_DELAY'      ,'100');
     INVOICE_MAXROW      := INI_LOAD_STR (FILEPATH_INVOICE,'INVOICE_MAXROW'     ,'20' );
     INVOICE_LPTVALUE    := INI_LOAD_STR (FILEPATH_INVOICE,'INVOICE_LPTVALUE'   ,'223');
     INVOICE_LPTADDR     := INI_LOAD_STR (FILEPATH_INVOICE,'INVOICE_LPTADDR'    ,'88' );
     CASHDRAWER_CASH     := INI_LOAD_INT (FILEPATH_INVOICE,'CASHDRAWER_CASH'    ,0    );
     CASHDRAWER_PORT     := INI_LOAD_INT (FILEPATH_INVOICE,'CASHDRAWER_PORT'    ,0    );
     CASHDRAWER_INTTIME  := INI_LOAD_INT (FILEPATH_INVOICE,'CASHDRAWER_INTTIME' ,0    );
     IF FormExists('FRINVOICE' )=TRUE THEN
        BEGIN
        FRINVOICE.ED_PRINTER .ItemIndex := INVOICE_PRINTER   ;
        FRINVOICE.ED_PORT    .ItemIndex := INVOICE_PORT      ;
        FRINVOICE.ED_DELAY   .Text      := INVOICE_DELAY     ;
        FRINVOICE.ED_MAXROW  .Text      := INVOICE_MAXROW    ;
        FRINVOICE.ED_LPTVALUE.Text      := INVOICE_LPTVALUE  ;
        FRINVOICE.ED_LPTADDR .Text      := INVOICE_LPTADDR   ;
        FRINVOICE.CD_CASH    .ItemIndex := CASHDRAWER_CASH   ;
        FRINVOICE.CD_PORT    .ItemIndex := CASHDRAWER_PORT   ;
        FRINVOICE.CD_INTTIME .VALUE     := CASHDRAWER_INTTIME;
        END;
     END;
END;

PROCEDURE INVOICE_WRITE_INI;
BEGIN
  IF FileExists(FILEPATH_INVOICE) = TRUE  THEN
     BEGIN
     FILE_REWRITE(FILEPATH_INVOICE);

     IF FormExists('FRINVOICE' )=TRUE THEN INVOICE_CHANGE_VARIABLE;
     INI_SAVE_INT (FILEPATH_INVOICE,'INVOICE_PRINTER'    ,INVOICE_PRINTER    );
     INI_SAVE_INT (FILEPATH_INVOICE,'INVOICE_PORT'       ,INVOICE_PORT       );
     INI_SAVE_STR (FILEPATH_INVOICE,'INVOICE_DELAY'      ,INVOICE_DELAY      );
     INI_SAVE_STR (FILEPATH_INVOICE,'INVOICE_MAXROW'     ,INVOICE_MAXROW     );
     INI_SAVE_STR (FILEPATH_INVOICE,'INVOICE_LPTVALUE'   ,INVOICE_LPTVALUE   );
     INI_SAVE_STR (FILEPATH_INVOICE,'INVOICE_LPTADDR'    ,INVOICE_LPTADDR    );
     INI_SAVE_INT (FILEPATH_INVOICE,'CASHDRAWER_CASH'    ,CASHDRAWER_CASH    );
     INI_SAVE_INT (FILEPATH_INVOICE,'CASHDRAWER_PORT'    ,CASHDRAWER_PORT    );
     INI_SAVE_INT (FILEPATH_INVOICE,'CASHDRAWER_INTTIME' ,CASHDRAWER_INTTIME );
     END;
END;


PROCEDURE INVOICE_IV_TITLE;
BEGIN
  INVOICE_OPEN_PORT;
  //IF ED_PRINTER.ItemIndex =0 THEN  //测试LPT1
  //IF (INTTOSTR(INP32(STRTOINTDEF(C_LPTADDR,889))) <> C_LPTVALUE) AND (OUT_PORT = 'LPT1') THEN EXIT;
  
  IF TEST_OPEN_FILE(INVOICE_OUT_PORT) = FALSE THEN SHOWMESSAGE('无法打开连接口');
  
  IF INVOICE_FIRST_PRINT = FALSE THEN
     BEGIN
     INVOICE_FIRST_PRINT := TRUE;
     IF INVOICE_PRINTER =4 THEN
        BEGIN
        INVOICE_IV_CTRL(CHR(27)+'@');
        INVOICE_IV_CTRL(CHR(27)+'z'+CHR(1));
        END;
     END;
END;

PROCEDURE INVOICE_IV_TEXT(EXPRESSION:STRING);
VAR STR:STRING;
BEGIN
  INVOICE_IV_TITLE;
  
  IF INVOICE_PRINTER =0 THEN STR := 'XP1'+ EXPRESSION;
  IF INVOICE_PRINTER =1 THEN STR := CHR(27)+CHR(82)+CHR(0)+ EXPRESSION;
  IF INVOICE_PRINTER =2 THEN STR := EXPRESSION;
  IF INVOICE_PRINTER =3 THEN STR := CHR(27)+CHR(27)+'PB1'+EXPRESSION;
  IF INVOICE_PRINTER =4 THEN STR := EXPRESSION;
  
  //IF ED_PRINTER.ItemIndex =0 THEN  //测试LPT1
  //IF (INTTOSTR(INP32(STRTOINTDEF(C_LPTADDR,889))) <> C_LPTVALUE) AND (OUT_PORT = 'LPT1') THEN EXIT;
  COMPORT_OUTLN(INVOICE_OUT_PORT,STR);
  IF FormExists('FRINVOICE' )=TRUE THEN FRINVOICE.MEMO.Lines.Add( STR );
END;

⌨️ 快捷键说明

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