Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Drucken klappt! Aber nur eine Seite o.O (https://www.delphipraxis.net/156414-drucken-klappt-aber-nur-eine-seite-o-o.html)

Portfreak 1. Dez 2010 12:23

Delphi-Version: 5

Drucken klappt! Aber nur eine Seite o.O
 
Hallöchen!

Zurzeit versuche ich diverse Informationen meines Projektes zu drucken was tadellos funktioniert.
ALLERDINGS ist egal wieviele Zeilen vorhanden sind, er bedruckt nur eine Seite und dann ist der druckvorgang beendet...

Ich habe entweder hier im Forum oder auf einer anderen plattform folgenden Code benutz.


Delphi-Quellcode:
procedure TfMainRechner.TBItem1Click(Sender: TObject);
var i, lPageLine, lLineHeight, lLineCount: integer;
begin
c:=0;
if PrintDialog1.Execute then begin
Printer.BeginDoc;
   Printer.Canvas.Font.Name := 'Arial';
   Printer.Canvas.Font.Size := 11;
   lLineHeight := Printer.Canvas.TextHeight('Dummy');
   lLineCount := Printer.PageHeight div lLineHeight;
   for i := 0 to Memo1.Lines.Count -1 do
   begin
       if ((i mod lLineCount) = 0) then
       begin
          Printer.NewPage;
          lPageLine := 1;
       end;
       
       if (i = 0) then
       begin
          ////////////Angaben zur Tabelle
          Printer.Canvas.TextOut(50,lPageLine * lLineHeight+1500+25, 'TABELLENWERTE');
          Printer.Canvas.TextOut(50,lPageLine * lLineHeight+1575+25, 'Nr.');
          Printer.Canvas.TextOut(550,lPageLine * lLineHeight+1575+25, 'datum');
          Printer.Canvas.TextOut(1050,lPageLine * lLineHeight+1575+25, 'XXXX');
          Printer.Canvas.TextOut(1550,lPageLine * lLineHeight+1575+25, 'XXXX');
          Printer.Canvas.TextOut(2050,lPageLine * lLineHeight+1575+25, 'XXXX');
          inc(lPageLine);
       end;
       Printer.Canvas.TextOut(50, lPageLine * lLineHeight + 1625+25, MemoNr.Lines[i]);
       Printer.Canvas.TextOut(550, lPageLine * lLineHeight + 1625+25, Memo1.Lines[i]);
       Printer.Canvas.TextOut(1050, lPageLine * lLineHeight + 1625+25, Memo2.Lines[i]);
       Printer.Canvas.TextOut(1550, lPageLine * lLineHeight + 1625+25, Memo3.Lines[i]);
       Printer.Canvas.TextOut(2050, lPageLine * lLineHeight + 1625+25, Memo4.Lines[i]);
       inc(lPageLine);
   end;
   Printer.EndDoc;
end;
end;
HAb mir überlegt es mit einer if abfrage zu definieren wenn i > 35 ist dann soll er eine neue seite benutzen. Allerdings ist ab i:=35 jeder durchlauf > 35 und es werden "millionen" Blattserien eingezogen.
Hat jemand eine idee?

Luckie 1. Dez 2010 12:26

AW: Drucken klappt! Aber nur eine Seite o.O
 
Müsste es nicht
Delphi-Quellcode:
(i mod 35) = 0
heißen, wenn alle 35 Zeilen eine neue Seite erzeugt werden soll und i die laufen Zeilenzahl ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz