客人在超市有可能买一件物品,又可能买几十件,也就是说,报表设置的纸张长度是自由变的,一打完就停,它是怎样实现的??

解决方案 »

  1.   

    procedure TForm1.ButtonPrintClick(Sender: TObject);
    var
      PText:TextFile;
      i:integer;
    begin
      Printer.Canvas.Font.Charset:=GB2312_CHARSET;
      AssignPRN(PText);
      Rewrite(PText);
      Printer.Canvas.Font.Name:='黑体';
      Printer.Canvas.Font.Size:=10;
      writeln(Ptext,'POS 票据');
      writeln(Ptext,'');
      writeln(Ptext,'品名  单价   数量   小计');
      For i:=1 to ADODataSetPJ.RecordCount do
        writeln(Ptext,ADODataSetPJ.FieldByName('pm').asString+
        ADODataSetPJ.FieldByName('dj').asString+
        ADODataSetPJ.FieldByName('sl').asString+
        ADODataSetPJ.FieldByName('hj').asString);
      writeln(Ptext,'');
      CloseFile(Ptext);
    end;
      

  2.   

    这跟程序无关啊,是因为QR里的DetailBand,把数据放在这个里面就可以了,它会自动根据记录的多少进行分页啊等等
      

  3.   

    QR也可以
    但是很麻烦
    http://community.csdn.net/Expert/topic/3618/3618183.xml?temp=6.620425E-02
    这里偶的回复可以实现
    POS机器内存小
    直接写效率高点
      

  4.   

    参考这篇帖子:http://community.csdn.net/Expert/topic/3643/3643953.xml?temp=.6734583