var
F:Textfile;
begin
Assignprn(f);
//printer.PageWidth:=200;
printer.PrinterIndex:=-1;
rewrite(F);
if ioresult=0 then
 begin
 writeln(F,'hello world');
 end;
end;
为什么我打印的时候还会走纸啊,我想打印完这行就停下来,大家帮帮我啊谢谢了

解决方案 »

  1.   

    Printer应该是按页打印的,你可以先用Printer.Canvas.TextOut,把全部内容输出完后再提交打印,如下例:
    Printer.BeginDoc;
    Printer.Canvas.TextOut(0,0,'aaaa');
    Printer.Canvas.TextOut(0,100,'bbbbb');
    Printer.NewPage;
    Printer.Canvas.TextOut(0,0,'1111');
    Printer.Canvas.TextOut(0,100,'22222');
    Printer.EndDoc;
      

  2.   

    To: 
     wudi_1982(︻┳═一) 
    正是这个意思,可能不是一行,我是例如一行,
    To:
     erhan()
    不知道用我那个方法高pageheight会不会有用的,或者有没有其它方法
     谢谢你们两位
      

  3.   

    to:
     erhan():
     Printer.BeginDoc;
    Printer.Canvas.TextOut(0,0,'aaaa');
    Printer.Canvas.TextOut(0,100,'bbbbb');
    //Printer.NewPage;
    Printer.Canvas.TextOut(0,0,'1111');
    Printer.Canvas.TextOut(0,100,'22222');
    Printer.EndDoc;
    打印完了还是是会走完一页纸,我的意思是想只打完四行就停下来
      

  4.   

    好像不行吧。。打印的时候,会现把打印的内容发到缓冲区,然后以页为单位打印。间接的做法是你可以用一个form现实要打印的内容,然后在这个FORM上模拟一行一行的产生打印内容,但打印的时候,还是一次打印。
      

  5.   

    通常情况下是不行,不知道禁用了后台打印服务spoolsv.exe,是不是有效果,楼主可以试一下,我这台机器没带打印机,所以没法替你试了.另外,你那种形式的打印,用printer可能实现不了,需要你用api来实现了.
      

  6.   

    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;
    我就是想有多少行找多少行,怎么样才能做到~