有的票据打印机没有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; 

解决方案 »

  1.   

    to Babylon5(巴比伦五号): 这段程序是不是要等到程序执行完以后票据打印机才一起执行打印,
    如果我需要在程序执行过程中就打印,即writeln一行,打印一行,该怎么做,这对超市收款打印票据是必要的。
    我其实试过用rewrite,就是在每一个writeln前加上rewrite,那样做是可以即时打印了。但行距却变的奇大,可能rewrite是将打印分页了。要是有方法能实现的话,我也给分40。我现在这个ID已经没有分了,等我重新申请一个一定立刻给你。