unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,Printers,winspool, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
ComboBox1: TComboBox;
Button6: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
// chs0=$1C,$26,$1C,$57,0;//中文(普通)
// chs1=$1C,$26,$1C,$57,1;//中文(四倍)
// eng=$1C,$2E,$1C,$57,0;//英文(普通)
// eng=$1C,$2E,$1C,$57,1;//英文(四倍)
// cut=$1B,$69;//切紙
// hl=$0A;//換行
// cr=$0D];//回車
// sp=$1B,$20,2;//字間間隔
// lsp=$1B,$32;//行間間隔
// hom=$1B,$3C;//行首
implementation
var
PrnHwnd:THandle;
{$R *.DFM}
procedure OpenLptPrn(hp:string);
begin
PRNHwnd:=CreateFile(Pchar(hp), GENERIC_READ or GENERIC_WRITE,0,nil, OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
if PRNHwnd=INVALID_HANDLE_VALUE then
Exception.Create('無效並行口');
end;
procedure delay(n:integer);//延時
var t:Tdatetime;
begin
t:=time;
repeat
//
until time>=t+n/24/60/60/1000;
end;
procedure
SendToPrinter(SendBuf:array of byte);overload
var
tem:cardinal;
begin
WriteFile(PRNHwnd,SendBuf,High(SendBuf)+1,tem,nil);
end;
procedure SendToPrinter0(SendBuf:string);overload
var
i,a:integer;
begin
a:=0;
for i:=1 to Length(SendBuf) do
begin
if a=0 then
begin
if (ord(SendBuf[i])>0)and(ord(SendBuf[i])<128) then
begin
SendToPrinter([$1C,$2E,ord(SendBuf[i])]);
end
else
begin
SendToPrinter([$1C,$26,$1C,$57,0,ord(SendBuf[i]),ord(SendBuf[i+1])]);
a:=1;
end;
end
else
begin
a:=0;
end;
end;
SendToPrinter([$1C,$2E,ord(' '),$0A]);
end;
procedure SendToPrinter1(SendBuf:string);overload
var
i,a:integer;
begin
a:=0;
for i:=1 to Length(SendBuf) do
begin
if a=0 then
begin
if (ord(SendBuf[i])>0)and(ord(SendBuf[i])<128) then
begin
SendToPrinter([$1C,$2E,ord(SendBuf[i])]);
end
else
begin
SendToPrinter([$1C,$26,$1C,$57,1,ord(SendBuf[i]),ord(SendBuf[i+1])]);
a:=1;
end;
end
else
begin
a:=0;
end;
end;
SendToPrinter([$0A]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;s:string;
begin
if COMBOBOX1.Text='' then
s:='COM1'
else
s:=COMBOBOX1.Text;
OpenLptPrn(s);
SendToPrinter1(' 歡 迎 光 臨');
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 項目: '+'押金(現金)');
SendToPrinter0(' 機號: '+'xx');
SendToPrinter0(' 金額: '+'xx.xx'+'元');
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 時間:'+datetostr(date)+' '+timetostr(time));
SendToPrinter0(' 收款員:張三 ');
delay(3000);
for i:=0 to 9 do
begin
sendtoprinter([$0A]);
end;
SendToPrinter([$0D,$1B,$69]);
fileclose(PRNHwnd);
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;s:string;
begin
if COMBOBOX1.Text='' then
s:='COM1'
else
s:=COMBOBOX1.Text;
OpenLptPrn(s);
SendToPrinter1(' 歡 迎 光 臨');
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 項目:結賬 票據流水號:'+'xxx');
SendToPrinter0(' 機號:'+'xx');
SendToPrinter0(' 開始時間:'+datetostr(date)+' '+timetostr(time));
SendToPrinter0(' 結束時間:'+datetostr(date)+' '+timetostr(time));
SendToPrinter0(' 上機:'+'xx.xx'+'元 消費:'+'xx.xx'+'元');
delay(3000);
SendToPrinter0(' 附加:'+'xx.xx'+'元 電話:'+'xx.xx'+'元');
SendToPrinter0(' 其他:'+'xx.xx'+'元');
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 合計:'+'xx.xx'+'元 押金:'+'xx.xx'+'元');
SendToPrinter0(' 現金:'+'xx.xx'+'元 刷卡:'+'xx.xx'+'元');
SendToPrinter0(' 退款:'+'xx.xx'+'元');
delay(3000);
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 時間:'+datetostr(date)+' '+timetostr(time));
SendToPrinter0(' 收款員:'+'xxx');
delay(2000);
for i:=0 to 10 do
begin
sendtoprinter([$0A]);
end;
SendToPrinter([$0D,$1B,$69]);
fileclose(PRNHwnd);
end;
procedure TForm1.Button4Click(Sender: TObject);
var i:integer;s:string;
begin
if COMBOBOX1.Text='' then
s:='COM1'
else
s:=COMBOBOX1.Text;
OpenLptPrn(s);
SendToPrinter1(' 繳 款 憑 證');
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 時 間:'+datetostr(date)+' '+timetostr(time));
SendToPrinter0(' 經手人:'+'xxx');
SendToPrinter0(' 上 機:'+'xx.xx'+'(元)');
SendToPrinter0(' 商 品:'+'xx.xx'+'(元)');
delay(2000);
SendToPrinter0(' 電 話:'+'xx.xx'+'(元)');
SendToPrinter0(' 合 計:'+'xx.xx'+'(元)');
SendToPrinter0(' 卡收入驗證:'+'xx.xx'+'(元)');
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 票據流水號:'+'xxx');
delay(2000);
for i:=0 to 10 do
begin
sendtoprinter([$0A]);
end;
SendToPrinter([$0D,$1B,$69]);
fileclose(PRNHwnd);
end;
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;s:string;
begin
if COMBOBOX1.Text='' then
s:='COM1'
else
s:=COMBOBOX1.Text;
OpenLptPrn(s);
SendToPrinter1(' 交 接 班 報 表');
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 應收現金:'+'xx.xx'+'(元)');
SendToPrinter0(' 預付押金:'+'xx.xx'+'(元)');
SendToPrinter0(' 商品收入:'+'xx.xx'+'(元)');
SendToPrinter0(' 電話收入:'+'xx.xx'+'(元)');
SendToPrinter0(' 合 計:'+'xx.xx'+'(元)');
SendToPrinter0(' -----------------------------');
SendToPrinter0(' 時間:'+datetostr(date)+' '+timetostr(time));
SendToPrinter0(' 收款員:張三 ');
delay(4000);
for i:=0 to 9 do
begin
sendtoprinter([$0A]);
end;
SendToPrinter([$0D,$1B,$69]);
fileclose(PRNHwnd);
end;
end.