我想问一下,我在DELPHI中调用printer打印报表,如何使它换页啊?就是我有很多数据,一页打不下,我用了printer.NewPage;程序运行时打印机虽然会换页,但后面的内容打不出来。
             if (J <> 0) and ((J mod 43) = 0) then
             begin
                Printer.EndDoc;
                Printer.BeginDoc;                
                printer.NewPage;
             end;
我要让它打完43行后自动换一张纸接着上面的内容继续往下打。
请问要怎么写?或是用其它方法,不用控件,

解决方案 »

  1.   

    EndDoc了当然就不打了赛
    Printer.BeginDoc;
    ....打印
    ... newpage 换页
    ....打印
    Printer.EndDoc;
      

  2.   

    给你段代码,以前写的,可以参考一下    
        Printer.Title := FPrintParam.PrintFileName;
        Printer.BeginDoc;
        for PageNo := StartPage to StopPage do
        begin
          if FAborted or Printer.Aborted then
          begin
            Printer.Abort;
            Break;
          end;
          Printer.Canvas.StretchDraw(PageRect, TMetaFile(FPages[PageNo - 1]));
          if PageNo <> StopPage then
            Printer.NewPage;
        end;
        Printer.EndDoc;
      

  3.   

    回  : ssq237712(流亡帅哥) ( ) 信誉:105 
    我试过了,我原来写的是
    if (J <> 0) and ((J mod 43) = 0) then
        printer.NewPage;
    但这样还是不行,打完第一张正确后虽然打印机有走纸,但出来就是空白的,
      

  4.   

    newpage之后再继续打印你的东西。
    你看我后面法的那段代码,这是我以前的一个预览组件里写的,正确可用的。
      

  5.   

    我是从数据库中取出的数据。部分代码
    First;
    while not Eof do
    begin
    .......{打印出内容}
    Next;
    if (J <> 0) and ((J mod 43) = 0) then
       printer.NewPage;
    J:=J+1;
    end;
    这样就是不行。晕死了