有的票据打印机没有Windows驱动程序,
当然说明书中还是有各种打印控制命令的。
程序中使用这种打印机时,就如同当年在DOS时代,
所有的打印内容都自己发送,包括换行、换页,
因此你不发送换页的控制命令就可以了。 例如下面的例子:
function PrintBill( TTime : TDateTime; AT : Byte; Amount : SmallInt; LaneNo : Byte; EmpNo : string ) : Boolean;
var
f : TextFile;
i : Byte;
begin
AssignFile( f, 'LPT1' );
ReWrite( f );
for i := 1 to 8 do Writeln( f );
Write( f, ' ' + IntToStr( No ) );
Writeln( f, ' ' + EmpNo );
for i := 1 to 2 do Writeln( f );
Write( f, ' ' + IntToStr( AT ) );
Writeln( f, ' ' + IntToStr( Amount ) );
for i := 1 to 2 do Writeln( f );
Writeln( f, ' ' + FormatDateTime( dfDate, TTime ) );
for i := 1 to 1 do Writeln( f );
Writeln( f, ' ' + FormatDateTime( dfTime, TTime ) );
for i := 1 to 7 do Writeln( f );
CloseFile( f );
Result := True;
end;
当然说明书中还是有各种打印控制命令的。
程序中使用这种打印机时,就如同当年在DOS时代,
所有的打印内容都自己发送,包括换行、换页,
因此你不发送换页的控制命令就可以了。 例如下面的例子:
function PrintBill( TTime : TDateTime; AT : Byte; Amount : SmallInt; LaneNo : Byte; EmpNo : string ) : Boolean;
var
f : TextFile;
i : Byte;
begin
AssignFile( f, 'LPT1' );
ReWrite( f );
for i := 1 to 8 do Writeln( f );
Write( f, ' ' + IntToStr( No ) );
Writeln( f, ' ' + EmpNo );
for i := 1 to 2 do Writeln( f );
Write( f, ' ' + IntToStr( AT ) );
Writeln( f, ' ' + IntToStr( Amount ) );
for i := 1 to 2 do Writeln( f );
Writeln( f, ' ' + FormatDateTime( dfDate, TTime ) );
for i := 1 to 1 do Writeln( f );
Writeln( f, ' ' + FormatDateTime( dfTime, TTime ) );
for i := 1 to 7 do Writeln( f );
CloseFile( f );
Result := True;
end;
如果我需要在程序执行过程中就打印,即writeln一行,打印一行,该怎么做,这对超市收款打印票据是必要的。
我其实试过用rewrite,就是在每一个writeln前加上rewrite,那样做是可以即时打印了。但行距却变的奇大,可能rewrite是将打印分页了。要是有方法能实现的话,我也给分40。我现在这个ID已经没有分了,等我重新申请一个一定立刻给你。