print1.pas

来自「思微POS连锁超市管理系统 (商业代码),几年前的东西了」· PAS 代码 · 共 425 行

PAS
425
字号
unit print1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, IniFiles, ComCtrls, Spin;

type
  Tpnt = class(TForm)
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Bevel1: TBevel;
    SpinEdit1: TSpinEdit;
    Bevel3: TBevel;
    Label5: TLabel;
    SpinEdit2: TSpinEdit;
    Label4: TLabel;
    Label7: TLabel;
    SpinEdit4: TSpinEdit;
    Label8: TLabel;
    SpinEdit5: TSpinEdit;
    Label9: TLabel;
    SpinEdit6: TSpinEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Button9: TButton;
    Label15: TLabel;
    Edit8: TEdit;
    CheckBox1: TCheckBox;
    Button10: TButton;
    Edit9: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    ComboBox1: TComboBox;
    Label6: TLabel;
    Edit10: TEdit;
    Edit11: TEdit;
    Label10: TLabel;
    Edit12: TEdit;
    Label11: TLabel;
    Edit13: TEdit;
    Label12: TLabel;
    Edit14: TEdit;
    Label13: TLabel;
    Edit15: TEdit;
    Label14: TLabel;
    Edit16: TEdit;
    Label16: TLabel;
    Button11: TButton;
    Label17: TLabel;
    Edit17: TEdit;
    Label18: TLabel;
    Edit18: TEdit;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    function setprint(pch: string): string;
    function gettext(pch: string): string;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Writecommdata(text: string);
    procedure FormCreate(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  pnt: Tpnt;
  PPP: array[0..100] of char;
  TempStr, TempSt: string;

implementation

{$R *.DFM}

function AddZero(s: string; HopeLength: Integer; rs: string): string;
begin
  Result := StringReplace(Format('%' + IntToStr(HopeLength) + 's', [s]), ' ', rs, [rfIgnoreCase, rfReplaceAll]);
end;

function Tpnt.gettext(pch: string): string;
var I, S: integer;
  Astr: string;
begin
  Result := setprint(Edit11.text);
  S := 2;
  for I := 1 to length(pch) do
  begin
    Astr := copy(pch, I, 1);
    if (strtoint(format('%2d', [Byte(Astr[1])])) >= 32) and (strtoint(format('%2d', [Byte(Astr[1])])) <= 127) then
    begin
      if S = 1 then Result := Result + Astr;
      if S = 2 then Result := Result + setprint(Edit12.text) + Astr;
      S := 1;
    end
    else
    begin
      if S = 2 then Result := Result + Astr;
      if S = 1 then Result := Result + setprint(Edit11.text) + Astr;
      S := 2;
    end;
  end;
end;

function Tpnt.setprint(pch: string): string;
var I, L, SA, SO: integer;
  CH: string;
begin
  SA := 1; SO := 0; Result := '';
  for I := 1 to length(pch) do
  begin
    if copy(pch, I, 1) = ',' then
    begin
      CH := copy(pch, SA, SO);
      if CH = 'TEXT' then
      begin
        Result := Result + gettext(Edit1.text);
      end
      else
      begin
        try
          if CH <> '' then Result := Result + CHAR(strtoint(CH));
        except
          Application.MessageBox(PCHAR('输入命令格式错误:' + CH), '错误', MB_OK + MB_ICONERROR);
          abort;
        end;
      end;
      SA := I + 1; SO := 0;
      continue;
    end;
    SO := SO + 1;
  end;
  CH := copy(pch, SA, SO);
  if CH = 'TEXT' then
  begin
    Result := Result + gettext(Edit1.text);
  end
  else
  begin
    try
      if CH <> '' then Result := Result + CHAR(strtoint(CH));
    except
      Application.MessageBox(PCHAR('输入命令格式错误:' + CH), '错误', MB_OK + MB_ICONERROR);
      abort;
    end;
  end;
end;

procedure Tpnt.Writecommdata(text: string);
var F: TextFile;
begin
  AssignFile(F, ComboBox1.Text);
  Rewrite(F);
  Write(F, text);
  CloseFile(F);
end;

procedure Tpnt.Button1Click(Sender: TObject);
begin
  TempStr := setprint(Edit2.text);
  writecommdata(TempStr);
end;

procedure Tpnt.Button2Click(Sender: TObject);
begin
  Edit2.text := '27,64';
  Button1.Click;
end;

procedure Tpnt.Button3Click(Sender: TObject);
begin
  Edit2.text := '28,38';
  Button1.Click;
end;

procedure Tpnt.Button4Click(Sender: TObject);
begin
  Edit2.text := '28,46';
  Button1.Click;
end;

procedure Tpnt.Button5Click(Sender: TObject);
begin
  Edit2.text := 'TEXT';
  Button1.Click;
end;

procedure Tpnt.Button6Click(Sender: TObject);
begin
  Edit2.text := Edit14.text;
  Button1.Click;
end;

procedure Tpnt.Button7Click(Sender: TObject);
begin
  Edit2.text := Edit16.text;
  Button1.Click;
  sleep(strtointdef(Edit18.text, 100));
end;

procedure Tpnt.Button8Click(Sender: TObject);
begin
  Edit2.text := '28,33,00001100';
  Button1.Click;
end;

procedure Tpnt.ComboBox1Change(Sender: TObject);
var print: Tinifile;
begin
  print := Tinifile.Create(ExtractFilePath(Paramstr(0)) + 'pnt.ini');
  print.WriteString('COM', 'NAME', inttostr(ComBoBox1.itemindex));
  print.Destroy;
end;

procedure Tpnt.Button9Click(Sender: TObject);
var zz: integer;
begin
  if CheckBox1.Checked = true then
  begin
    Edit2.text := '28,33,00001100';
    Button1.Click;
    Edit1.Text := AddZero('', (SpinEdit1.Value - length(Edit8.text) * 2) div 4, ' ') + Edit8.Text;
    Edit2.text := 'TEXT';
    Button1.Click;
    Button7.Click;
    Edit2.text := '28,33,00000000';
    Button1.Click;
  end;
  if CheckBox1.Checked = false then
  begin
    Edit1.Text := AddZero('', (SpinEdit1.Value - length(Edit8.text)) div 2, ' ') + Edit8.Text;
    Edit2.text := 'TEXT';
    Button1.Click;
    Button7.Click;
  end;
  Edit1.Text := Edit9.text;
  Button5.Click;
  Button7.Click;
  Edit1.Text := AddZero('', SpinEdit1.Value, '=');
  Button5.Click;
  Button7.Click;
  Edit1.Text := Edit4.text;
  Button5.Click;
  Button7.Click;
  Edit1.Text := Edit3.text + AddZero('', SpinEdit2.Value - length(Edit3.text), ' ') + Edit5.text + AddZero('', SpinEdit4.Value - length(Edit5.text), ' ') + Edit6.text + AddZero('', SpinEdit5.Value - length(Edit6.text), ' ') + Edit7.text;
  Button5.Click;
  Button7.Click;
  Edit1.Text := AddZero('', SpinEdit1.Value, '=');
  Button5.Click;
  Button7.Click;
  for zz := 0 to strtointdef(Edit17.text, 1) do //走纸M行
  begin
    Button7.Click;
  end;
  if Edit15.text <> '' then
  begin
    Edit1.Text := Edit15.text; //切纸
    Button5.Click;
    Button7.Click;
  end;
end;

procedure Tpnt.FormCreate(Sender: TObject);
var print: Tinifile;
begin
  print := Tinifile.Create(ExtractFilePath(Paramstr(0)) + 'pnt.ini');
  ComBoBox1.itemindex := print.ReadInteger('COM', 'NAME', 0);
  if print.Readstring('TEXT', 'BT', '2') = '1' then CheckBox1.Checked := false;
  if print.Readstring('TEXT', 'BT', '2') = '2' then CheckBox1.Checked := true;
  SpinEdit1.Text := print.Readstring('TEXT', 'ROWLENGTH', '40');
  SpinEdit2.Text := print.Readstring('TEXT', 'CODELENGTH', '16');
  SpinEdit4.Text := print.Readstring('TEXT', 'PRCLENGTH', '20');
  SpinEdit5.Text := print.Readstring('TEXT', 'SLLENGTH', '10');
  SpinEdit6.Text := print.Readstring('TEXT', 'JELENGTH', '10');
  Edit9.Text := print.Readstring('TEXT', 'HTS', '编码      单价    数量    金额');
  Edit10.Text := print.Readstring('COMMAND', 'CHS', '27,64');
  Edit11.Text := print.Readstring('COMMAND', 'SYHZ', '28,38');
  Edit12.Text := print.Readstring('COMMAND', 'QXHZ', '28,46');
  Edit13.Text := print.Readstring('COMMAND', 'BKBG', '28,33,00001100');
  Edit14.Text := print.Readstring('COMMAND', 'KQX', '27,112,0,100,150');
  Edit15.Text := print.Readstring('COMMAND', 'QZ', '27,105,0');
  Edit16.Text := print.Readstring('COMMAND', 'DY', '10');
  Edit17.Text := print.Readstring('COMMAND', 'ZZ', '4');
  Edit18.Text := print.Readstring('COMMAND', 'YS', '1');
  print.Destroy;
  Edit2.text := Edit10.text; //初始化打印机
  Button1.Click;
end;

procedure Tpnt.Button10Click(Sender: TObject);
var print: Tinifile;
begin
  print := Tinifile.Create(ExtractFilePath(Paramstr(0)) + 'pnt.ini');
  print.WriteInteger('TEXT', 'ROWLENGTH', SpinEdit1.Value);
  print.WriteString('TEXT', 'CODELENGTH', SpinEdit2.Text);
  print.WriteString('TEXT', 'PRCLENGTH', SpinEdit4.Text);
  print.WriteString('TEXT', 'SLLENGTH', SpinEdit5.Text);
  print.WriteString('TEXT', 'JELENGTH', SpinEdit6.Text);
  print.WriteString('TEXT', 'HTS', Edit9.Text);
  if CheckBox1.Checked = true then print.WriteString('TEXT', 'BT', '2');
  if CheckBox1.Checked = false then print.WriteString('TEXT', 'BT', '1');
  print.Destroy;
end;


procedure Tpnt.Button11Click(Sender: TObject);
var print: Tinifile;
begin
  print := Tinifile.Create(ExtractFilePath(Paramstr(0)) + 'pnt.ini');
  print.WriteString('COMMAND', 'CSH', Edit10.Text);
  print.WriteString('COMMAND', 'SYHZ', Edit11.Text);
  print.WriteString('COMMAND', 'QXHZ', Edit12.Text);
  print.WriteString('COMMAND', 'BKBG', Edit13.Text);
  print.WriteString('COMMAND', 'KQX', Edit14.Text);
  print.WriteString('COMMAND', 'QZ', Edit15.Text);
  print.WriteString('COMMAND', 'DY', Edit16.Text);
  print.WriteString('COMMAND', 'ZZ', Edit17.Text);
  print.WriteString('COMMAND', 'YS', Edit18.Text);
  print.Destroy;
end;

procedure Tpnt.Button12Click(Sender: TObject);
begin
  if CheckBox1.Checked = true then
  begin
    Edit2.text := Edit13.text;
    Button1.Click;
    Edit1.Text := AddZero('', (SpinEdit1.Value - length(Edit8.text) * 2) div 4, ' ') + Edit8.Text;
    Edit2.text := 'TEXT';
    Button1.Click;
    Button7.Click;
    Edit2.text := '28,33,00000000';
    Button1.Click;
  end;
  if CheckBox1.Checked = false then
  begin
    Edit1.Text := AddZero('', (SpinEdit1.Value - length(Edit8.text)) div 2, ' ') + Edit8.Text;
    Edit2.text := 'TEXT';
    Button1.Click;
    Button7.Click;
  end;
end;

procedure Tpnt.Button13Click(Sender: TObject);
begin
  Edit1.Text := AddZero('', SpinEdit1.Value, '=');
  Button5.Click;
  Button7.Click;
end;

procedure Tpnt.Button14Click(Sender: TObject);
begin
  Edit1.Text := Edit4.text;
  Button5.Click;
  Button7.Click;
  Edit1.Text := Edit3.text + AddZero('', SpinEdit2.Value - length(Edit3.text), ' ') + Edit5.text + AddZero('', SpinEdit4.Value - length(Edit5.text), ' ') + Edit6.text + AddZero('', SpinEdit5.Value - length(Edit6.text), ' ') + Edit7.text;
  Button5.Click;
  Button7.Click;
end;

procedure Tpnt.Button15Click(Sender: TObject);
begin
  Edit1.Text := Edit9.text;
  Button5.Click;
  Button7.Click;
end;

procedure Tpnt.Button17Click(Sender: TObject);
begin
  Button5.Click;
  Button7.Click;
end;

procedure Tpnt.Button18Click(Sender: TObject);
var zz: integer;
begin
  for zz := 0 to strtointdef(Edit17.text, 1) do //走纸M行
  begin
    Button7.Click;
  end;
  if Edit15.text <> '' then
  begin
    Edit1.Text := Edit15.text; //切纸
    Button5.Click;
    Button7.Click;
  end;
end;

end.

⌨️ 快捷键说明

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