?? urinvoice.pas
字號:
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;
// 系統(tǒng)設置
PROCEDURE INVOICE_CHANGE_VARIABLE; // 當使用者改變設置時可更正變量值
PROCEDURE INVOICE_OPEN_PORT; // 打開機器要輸出的Port
PROCEDURE INVOICE_READ_INI; // 讀取上次的環(huán)境設置值
PROCEDURE INVOICE_WRITE_INI; // 將環(huán)境設置值存盤
// 打印控制
PROCEDURE INVOICE_IV_TITLE; // 輸出發(fā)票機打印前導控制命令
PROCEDURE INVOICE_IV_TEXT(EXPRESSION:STRING); // 輸出文字至發(fā)票機 - 含跳行
PROCEDURE INVOICE_IV_CTRL(EXPRESSION:STRING); // 輸出打印控制命令至發(fā)票機 - 含跳行
PROCEDURE INVOICE_IV_CTRLX(EXPRESSION:STRING); // 輸出打印控制命令至發(fā)票機 - 不含跳行
// 前臺發(fā)票打印控制
PROCEDURE INVOICE_IV_INV_TEXT(EXPRESSION:STRING); // 前臺發(fā)票, 單行文字
PROCEDURE INVOICE_IV_INV_LINEFEED; // 前臺發(fā)票, 空出一行(跳行)
PROCEDURE INVOICE_IV_PAGEFEED; // 前臺發(fā)票, 跳頁, 含蓋章
PROCEDURE INVOICE_IV_LEFTLINE_TEXT(EXPRESSION:STRING); // 前臺發(fā)票, 只打印收執(zhí)聯(lián)(二聯(lián)發(fā)票機)
// 其它控制
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; // 發(fā)票可打印的最大行數(shù)
INVOICE_LPTVALUE :STRING; // 檢查 LPT 時,是否有接發(fā)票機
INVOICE_LPTADDR :STRING; // 檢查 LPT 時,是否有接發(fā)票機
CASHDRAWER_CASH :INTEGER; // 錢箱的種類
CASHDRAWER_PORT :INTEGER; // 錢箱輸出的連接口
CASHDRAWER_INTTIME :INTEGER; // 接RS232的錢箱輸出時觸發(fā)次數(shù)
//計數(shù)器 - 暫存
INVOICE_COUNTER :INTEGER; // 發(fā)票打印時,記錄已打印幾行
INVOICE_FIRST_PRINT :BOOLEAN; // 發(fā)票機是否第一次打印
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); // 使用內(nèi)部式聲明, 結束后自動清除資源
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 + -