类似超市的收款后打印的小票,用QReport设计。宽度固定,长度可变。现在没有小票打印机,要开发后交付的时候再配。怎么设置页面?宽度可以了,按纸张的实际宽度。但长度怎么办?怎么保证小票打印完就停止走纸?

解决方案 »

  1.   

    小弟见过那种小票的制做方法是:把要打印的内容写到一个文本文件里,最后调用一个批处理文件用Copy 文件到LPT就行了.用的打印机是:Epson的Pos58热敏打印机.
      

  2.   

    小弟见过那种小票的制做方法是:把要打印的内容写到一个文本文件里,最后调用一个批处理文件用Copy 文件到LPT就行了.用的打印机是:Epson的Pos58热敏打印机.
      

  3.   

    我有一个小票打印的代码.都是写到程序里。你就随便看看吧.写得早了。
    procedure TDPrintFrm.SpeedButton1Click(Sender: TObject);
    var
       Year,Month,Day:Word;
       DateTime:String;
    begin  DecodeDate(now,Year,Month,Day);
      DateTime:=Format('%d-%d-%d',[Year,Month,Day]);
      Printer.BeginDoc;
      Printer.Canvas.Font.Name:='宋体';
      Printer.Canvas.Font.Size:=10;
      //                     列   行
      Printer.Canvas.TextOut(480,130,DianFrm.Combobox2.text+'(电费交纳单)');
      Printer.Canvas.TextOut(100,190,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.polyline([Point(100,200),Point(100,530)]);//第一条线
      Printer.Canvas.Polyline([point(210,200),point(210,530)]);//第二条线
      Printer.Canvas.Polyline([point(380,200),point(380,460)]);//第三条线
      Printer.Canvas.Polyline([point(580,200),point(580,460)]);//第四条线
      Printer.Canvas.Polyline([point(780,200),point(780,460)]);//第五条线
      Printer.Canvas.Polyline([point(980,200),point(980,460)]);//第六条线
      Printer.Canvas.Polyline([point(1180,200),point(1180,530)]);//第七条线
      Printer.Canvas.Polyline([point(1330,200),point(1330,530)]);//最后一条线
      Printer.Canvas.TextOut(100,220,' 名称 ');
      Printer.Canvas.TextOut(220,220,DianFrm.Edit1.Text);
      Printer.Canvas.TextOut(400,220,'上期用电(度)');
      Printer.Canvas.TextOut(600,220,'本期用电(度)');
      Printer.Canvas.TextOut(800,220,'实际用电(度)');
      Printer.Canvas.TextOut(1000,220,'单价(度/元)');
      Printer.Canvas.TextOut(1200,220,'金额(元)');
      Printer.Canvas.TextOut(100,250,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,290,' 门市');
      Printer.Canvas.TextOut(220,290,DianFrm.Edit2.Text+DianFrm.Label1.caption+DianFrm.Edit3.text+DianFrm.Label2.caption+DianFrm.Edit4.text+DianFrm.Label3.Caption);
      Printer.Canvas.TextOut(440,290,DianFrm.Edit5.Text);
      Printer.Canvas.TextOut(640,290,DianFrm.Edit6.Text);
      Printer.Canvas.TextOut(860,290,DianFrm.Edit7.Text);
      Printer.Canvas.TextOut(1050,290,DianFrm.Edit8.Text);
      Printer.Canvas.TextOut(1230,290,DianFrm.Edit9.Text);
      Printer.Canvas.TextOut(100,320,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,360,' 住房');
      Printer.Canvas.TextOut(220,360,DianFrm.Edit10.Text+DianFrm.Label4.Caption+DianFrm.Edit11.Text+DianFrm.Label5.Caption+DianFrm.Edit12.Text+DianFrm.Label6.Caption);
      Printer.Canvas.TextOut(440,360,DianFrm.Edit13.Text);
      Printer.Canvas.TextOut(640,360,DianFrm.Edit14.Text);
      Printer.Canvas.TextOut(860,360,DianFrm.Edit15.Text);
      Printer.Canvas.TextOut(1050,360,DianFrm.Edit16.Text);
      Printer.Canvas.TextOut(1220,360,DianFrm.Edit17.Text);
      Printer.Canvas.TextOut(100,390,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,430,' 住房');
      Printer.Canvas.TextOut(220,430,DianFrm.Edit18.Text+DianFrm.Label7.Caption+DianFrm.Edit19.Text+DianFrm.Label8.Caption+DianFrm.Edit20.Text+DianFrm.Label10.Caption);
      Printer.Canvas.TextOut(440,430,DianFrm.Edit21.Text);
      Printer.Canvas.TextOut(640,430,DianFrm.Edit22.Text);
      Printer.Canvas.TextOut(860,430,DianFrm.Edit23.Text);
      Printer.Canvas.TextOut(1050,430,DianFrm.Edit24.Text);
      Printer.Canvas.TextOut(1220,430,DianFrm.Edit25.Text);
      Printer.Canvas.TextOut(100,460,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,500,'合计大写');
      Printer.Canvas.TextOut(220,500,DianFrm.Edit26.Text);
      Printer.Canvas.TextOut(1230,500,DianFrm.Edit27.Text);
      Printer.Canvas.TextOut(100,530,' ----------------------------------------------------------------------------------------------');
      Printer.Canvas.TextOut(100,580,'收费单位:'+DianFrm.ComboBox2.Text);
      Printer.canvas.textout(580,580,'收费员:'+DianFrm.ComboBox1.Text);
      Printer.Canvas.TextOut(980,580,'时间:'+DateTime);
      Printer.EndDoc;end;
      

  4.   

    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;改进一下就可以了
      

  5.   

    to chenylin(陈SIR) ( ) 信誉:100 
    我用了你的例子怎么编译不通过啊?
    [Error] Unit1.pas(35): Undeclared identifier: 'Printer'
      

  6.   

    推荐一款套打开发模块,是一个dll,调用简单方便可以访问以下网址查看说明
    http://www.yxjr.com/cp/yxprint.html