Einzelnen Beitrag anzeigen

Portfreak

Registriert seit: 19. Nov 2010
19 Beiträge
 
#1

Drucken klappt! Aber nur eine Seite o.O

  Alt 1. Dez 2010, 12:23
Delphi-Version: 5
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?
  Mit Zitat antworten Zitat