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

📄 unallego.pas

📁 DELPHI编写的商场收银POS机源代码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit UNALLEGO;

interface

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

type
  TFMALLEGO = class(TForm)
    PageControl: TPageControl;
    PAGE_A: TTabSheet;
    ED_PORT: TRadioGroup;
    ED_CUTTER: TCheckBox;
    BitBtn1: TBitBtn;
    TabSheet2: TTabSheet;
    P_TEST_TEXT: TBitBtn;
    Label5: TLabel;
    ED_DENSITY: TSpinEdit;
    Comm1: TComm;
    Label6: TLabel;
    ED_DIR: TRadioGroup;
    Label7: TLabel;
    P_TEXT: TEdit;
    Label8: TLabel;
    Label9: TLabel;
    P_BARCODE: TEdit;
    P_TEST_BARCODE: TBitBtn;
    Label10: TLabel;
    ED_DELAY: TSpinEdit;
    ED_CODE: TComboBox;
    Label16: TLabel;
    Memo: TMemo;
    Label17: TLabel;
    Label1: TLabel;
    ED_DOT: TSpinEdit;
    ED_REF1: TMaskEdit;
    ED_REF2: TMaskEdit;
    Label2: TLabel;
    P_CTEXT: TEdit;
    P_TEST_CTEXT: TBitBtn;
    procedure FormActivate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure P_TEST_TEXTClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure P_TEST_BARCODEClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ED_REF2Exit(Sender: TObject);
    procedure P_TEST_CTEXTClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
   FILENAME      :STRING;

   C_SPEED       :STRING;
   C_DOT         :STRING;
   C_DENSITY     :STRING;
   C_DIR         :STRING;
   C_REF1        :STRING;
   C_REF2        :STRING;
   C_CUTTER      :STRING;
   C_PORT        :STRING;
   C_DELAY       :STRING;
   C_CODE        :STRING;

   TF :TEXTFILE;
   OUT_PORT :STRING;

   PROCEDURE OPEN_PORT;
   PROCEDURE READ_INI;
   PROCEDURE WRITE_INI;
   PROCEDURE CHANGE_INI;

   PROCEDURE PRINT_TITLE;
   PROCEDURE PRINT_END(CNT:INTEGER);
   PROCEDURE PRINT_CLS;
   PROCEDURE PRINT_ENTER_LABEL_FORMATTING_MODE;

   PROCEDURE PRINT_BARCODE(X,Y,WIDTH,HEIGHT:INTEGER;EXPRESSION:STRING;SHOW_TEXT:BOOLEAN);
   PROCEDURE PRINT_TEXT(FONT:STRING;X,Y:INTEGER;EXPRESSION:STRING);
   PROCEDURE PRINT_TEXT_POINT(FONT:STRING;X,Y:INTEGER;EXPRESSION:STRING);
   PROCEDURE PRINT_CUSTTEXT(EXPRESSION:STRING);

   PROCEDURE PRINT_SAVE_CTEXT(CNAME:STRING;T_FONTSIZE:INTEGER;T_FONTNAME,EXPRESSION:STRING);
   PROCEDURE PRINT_CTEXT(CNAME:STRING;X,Y:INTEGER);

   FUNCTION  TEXT_ENCODE_HEX(T_FONTSIZE:INTEGER;T_FONTNAME, T_STR:STRING):STRING;
  end;




var
  FMALLEGO: TFMALLEGO;

implementation

USES UN_UTL;

{$R *.DFM}


PROCEDURE TFMALLEGO.OPEN_PORT;
BEGIN

IF C_PORT = '0' THEN OUT_PORT := 'COM1';
IF C_PORT = '1' THEN OUT_PORT := 'COM2';
IF C_PORT = '2' THEN OUT_PORT := 'COM3';
IF C_PORT = '3' THEN OUT_PORT := 'COM4';

Comm1.CommName := OUT_PORT;
Comm1.StartComm;
Comm1.StopComm;

END;

PROCEDURE TFMALLEGO.READ_INI;
BEGIN

IF FileExists(FILENAME) = TRUE  THEN
   BEGIN
   C_SPEED  := FILE_READLN_REC(FILENAME,'LB_SPEED');
   C_DOT    := FILE_READLN_REC(FILENAME,'LB_DOT');
   C_DENSITY:= FILE_READLN_REC(FILENAME,'LB_DENSITY');
   C_DIR    := FILE_READLN_REC(FILENAME,'LB_DIR');
   C_REF1   := FILE_READLN_REC(FILENAME,'LB_REF1');
   C_REF2   := FILE_READLN_REC(FILENAME,'LB_REF2');
   C_CUTTER := FILE_READLN_REC(FILENAME,'LB_CUTTER');
   C_PORT   := FILE_READLN_REC(FILENAME,'LB_PORT');
   C_DELAY  := FILE_READLN_REC(FILENAME,'LB_DELAY');
   C_CODE   := FILE_READLN_REC(FILENAME,'LB_CODE');
   END;

END;

PROCEDURE TFMALLEGO.WRITE_INI;
BEGIN

FILENAME := 'ALLEGRO.INI';
IF FileExists(FILENAME) = TRUE  THEN
   BEGIN
   FILE_REWRITE(FILENAME);
//   FILE_APPEND_LOG(FILENAME,'LB_SPEED'  ,ED_SPEED.Text);
   FILE_APPEND_LOG(FILENAME,'LB_DOT'    ,ED_DOT.Text);
   FILE_APPEND_LOG(FILENAME,'LB_DENSITY',ED_DENSITY.Text);
   FILE_APPEND_LOG(FILENAME,'LB_DIR'    ,INTTOSTR(ED_DIR.ItemIndex));
   FILE_APPEND_LOG(FILENAME,'LB_REF1'   ,ED_REF1.Text);
   FILE_APPEND_LOG(FILENAME,'LB_REF2'   ,ED_REF2.Text);
   IF ED_CUTTER.CHECKED = FALSE THEN FILE_APPEND_LOG(FILENAME,'LB_CUTTER','0');
   IF ED_CUTTER.CHECKED = TRUE  THEN FILE_APPEND_LOG(FILENAME,'LB_CUTTER','1');
   FILE_APPEND_LOG(FILENAME,'LB_PORT'  ,INTTOSTR(ED_PORT.ItemIndex));
   FILE_APPEND_LOG(FILENAME,'LB_DELAY',ED_DELAY.Text);
   FILE_APPEND_LOG(FILENAME,'LB_CODE',INTTOSTR(ED_CODE.ItemIndex) );
   END;


END;

PROCEDURE TFMALLEGO.CHANGE_INI;
BEGIN

//   C_SPEED   := ED_SPEED.Text;
   C_DOT     := ED_DOT.Text;
   C_DENSITY := ED_DENSITY.Text;
   C_DIR     := INTTOSTR(ED_DIR.ItemIndex);
   C_REF1    := ED_REF1.Text;
   C_REF2    := ED_REF2.Text;
   IF ED_CUTTER.Checked = FALSE THEN C_CUTTER := '0';
   IF ED_CUTTER.Checked = TRUE  THEN C_CUTTER := '1';
   C_PORT  := INTTOSTR(ED_PORT.ItemIndex);
   C_DELAY   := ED_DELAY.Text;
   C_CODE    := INTTOSTR(ED_CODE.ItemIndex);

END;


PROCEDURE TFMALLEGO.PRINT_TITLE;
VAR T_LIST : TSTRINGS;
BEGIN
T_LIST := TSTRINGLIST.Create;

CHANGE_INI;
OPEN_PORT;

T_LIST.Add(CHR(2)+'qA');

T_LIST.Add(CHR(2)+'e');
T_LIST.Add(CHR(2)+'f214');   //SET FORM STOP POSITION , BACKFEED
T_LIST.Add(CHR(2)+'V0');    //裁刀
T_LIST.Add(CHR(2)+'O0214'); //OFFSET偏量
T_LIST.Add(CHR(2)+'M0500'); //标签最大长度

//T_LIST.Add('D'+C_DOT);         //点的粗细  //要在 FORMAT MODE 后设
T_LIST.Add('W');
T_LIST.Add('PC');          //打印速度
T_LIST.Add('SC');          //FEED速度
T_LIST.Add('H'+C_DENSITY);         //打印质量(温度)
//T_LIST.Add('H07');         //打印质量(温度)


IF TEST_OPEN_FILE(OUT_PORT) = FALSE THEN
   BEGIN
   SHOWMESSAGE('无法打开连接口');
   END;
IF TEST_OPEN_FILE(OUT_PORT) = TRUE THEN
   BEGIN
   AssignFile(TF,OUT_PORT);
   REWRITE(TF);
   WRITELN(TF,T_LIST.TEXT);
   CloseFile(TF);

{   C_CUTTER }
   MEMO.Lines.Clear;
   MEMO.Lines.TEXT := T_LIST.TEXT;
   END;

T_LIST.FREE;   
END;


PROCEDURE TFMALLEGO.PRINT_END(CNT:INTEGER);
BEGIN

DELAY(STRTOINTDEF(C_DELAY,0));

IF TEST_OPEN_FILE(OUT_PORT) = TRUE THEN
   BEGIN
   AssignFile(TF,OUT_PORT);
   REWRITE(TF);
   WRITELN(TF,'E');
   CloseFile(TF);
   MEMO.Lines.Add('E');
   END;
END;


PROCEDURE TFMALLEGO.PRINT_CLS;
BEGIN
IF TEST_OPEN_FILE(OUT_PORT) = TRUE THEN
   BEGIN
   AssignFile(TF,OUT_PORT);
   REWRITE(TF);
   WRITELN(TF,'CLS');
   CloseFile(TF);
   END;
END;

PROCEDURE TFMALLEGO.PRINT_ENTER_LABEL_FORMATTING_MODE;
BEGIN
IF TEST_OPEN_FILE(OUT_PORT) = TRUE THEN
   BEGIN
   AssignFile(TF,OUT_PORT);
   REWRITE(TF);
   WRITELN(TF,CHR(2)+'L');
   WRITELN(TF,'D'+C_DOT);      //点的粗细
   CloseFile(TF);
   MEMO.Lines.Add(CHR(2)+'L');
   END;
END;


PROCEDURE TFMALLEGO.PRINT_BARCODE(X,Y,WIDTH,HEIGHT:INTEGER;EXPRESSION:STRING;SHOW_TEXT:BOOLEAN);
VAR TP:STRING;
    T_DIR:STRING;
BEGIN

//设定条形码种类 ========================
IF SHOW_TEXT = FALSE THEN
case STRTOINTDEF(C_CODE,0) of
   0 :  TP := 'a';
   1 :  TP := 'o';
   2 :  TP := 'e';
   3 :  TP := 'f';
   else TP := 'a';
end;
IF SHOW_TEXT = TRUE THEN
case STRTOINTDEF(C_CODE,0) of
   0 :  TP := 'A';
   1 :  TP := 'O';
   2 :  TP := 'E';
   3 :  TP := 'F';
   else TP := 'A';
end;



   T_DIR := INTTOSTR(STRTOINTDEF(C_DIR,0)+1);
   X:= X + STRTOINTDEF(C_REF1,0);
   Y:= Y + STRTOINTDEF(C_REF2,0);



IF TEST_OPEN_FILE(OUT_PORT) = TRUE THEN
   BEGIN
   AssignFile(TF,OUT_PORT);
   REWRITE(TF);
   WRITELN(TF,T_DIR+ TP
                 + FILL_STR('0', INTTOSTR(WIDTH)  , 'L' ,2 )
                 + FILL_STR('0', INTTOSTR(HEIGHT) , 'L' ,3 )
                 + FILL_STR('0', INTTOSTR(Y), 'L' ,4 )
                 + FILL_STR('0', INTTOSTR(X), 'L' ,4 )
                 + EXPRESSION );
   CloseFile(TF);



   MEMO.Lines.Add(T_DIR+ TP
                 + FILL_STR('0', INTTOSTR(WIDTH)  , 'L' ,2 )
                 + FILL_STR('0', INTTOSTR(HEIGHT) , 'L' ,3 )
                 + FILL_STR('0', INTTOSTR(Y), 'L' ,4 )
                 + FILL_STR('0', INTTOSTR(X), 'L' ,4 )
                 + EXPRESSION );
   END;
END;

PROCEDURE TFMALLEGO.PRINT_TEXT(FONT:STRING;X,Y:INTEGER;EXPRESSION:STRING);
VAR T_DIR:STRING;
BEGIN

IF TEST_OPEN_FILE(OUT_PORT) = TRUE THEN
   BEGIN

   T_DIR := INTTOSTR(STRTOINTDEF(C_DIR,0)+1);
   X:= X + STRTOINTDEF(C_REF1,0);
   Y:= Y + STRTOINTDEF(C_REF2,0);


   AssignFile(TF,OUT_PORT);
   REWRITE(TF);
   WRITELN(TF,T_DIR+ FONT
                 + '11' + '000'
                 + FILL_STR('0', INTTOSTR(Y), 'L' ,4 )
                 + FILL_STR('0', INTTOSTR(X), 'L' ,4 )
                 + EXPRESSION );

   CloseFile(TF);



   MEMO.Lines.Add(T_DIR+ FONT
                 + '11' + '000'
                 + FILL_STR('0', INTTOSTR(Y), 'L' ,4 )
                 + FILL_STR('0', INTTOSTR(X), 'L' ,4 )
                 + EXPRESSION );

   END;
END;

PROCEDURE TFMALLEGO.PRINT_TEXT_POINT(FONT:STRING;X,Y:INTEGER;EXPRESSION:STRING);
VAR T_DIR, S:STRING;
BEGIN

IF TEST_OPEN_FILE(OUT_PORT) = TRUE THEN
   BEGIN

   T_DIR := INTTOSTR(STRTOINTDEF(C_DIR,0)+1);
   X:= X + STRTOINTDEF(C_REF1,0);
   Y:= Y + STRTOINTDEF(C_REF2,0);

   S :=T_DIR+ '9'
            + '00' + FONT
            + FILL_STR('0', INTTOSTR(Y), 'L' ,4 )
            + FILL_STR('0', INTTOSTR(X), 'L' ,4 )

⌨️ 快捷键说明

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