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 + -
显示快捷键?