Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringrid mehr Seiten drucken (https://www.delphipraxis.net/75227-stringrid-mehr-seiten-drucken.html)

Privateer3000 16. Aug 2006 09:46


Stringrid mehr Seiten drucken
 
Hallo Gemeinde
mit dieser Procdure soll ein Stringgrid gedruckt werden.
Leider druckt es nur eine Seite.
was ist falsch?
Delphi-Quellcode:
rocedure PrintGrid(sGrid: TStringGrid; recid: TRichEdit; sTitle: string);
var
  X1, X2: Integer;
  Y1, Y2: Integer;
  TmpI: Integer;
  F: Integer;
  TR: TRect;
begin
  Printer.Title := sTitle;
  Printer.BeginDoc;
  Printer.Canvas.Pen.Color := 0;
  Printer.Canvas.Font.Name := 'Times New Roman';
  Printer.Canvas.Font.Size := 16;
  Printer.Canvas.Font.Style := [fsBold, fsUnderline];
  Printer.Canvas.TextOut(0, 100, Printer.Title);
  Printer.Canvas.TextOut(1200,100, DateToStr(date));
  for F := 0 to sGrid.ColCount - 1 do
  begin
    X1 := 0;
    for TmpI := 0 to (F - 1) do
      X1 := X1 + 7 * (sGrid.ColWidths[TmpI]);
    Y1 := 300;
    X2 := 0;
    for TmpI := 0 to F do
      X2 := X2 + 7 * (sGrid.ColWidths[TmpI]);
    Y2 := 450;
    TR := Rect(X1, Y1, X2 - 30, Y2);
    Printer.Canvas.Font.Style := [fsBold];
    Printer.Canvas.Font.Size := 9;
    Printer.Canvas.TextRect(TR, X1 + 50, 350, sGrid.Cells[F, 0]);
    Printer.Canvas.Font.Style := [];
    for TmpI := 0 to sGrid.RowCount - 1 do
    begin
      Y1 := 150 * TmpI + 300;
      Y2 := 150 * (TmpI + 1) + 300;
      TR := Rect(X1, Y1, X2 - 30, Y2);
      Printer.Canvas.TextRect(TR, X1 + 50, Y1 + 50, sGrid.Cells[F, TmpI]);
    end;
  end;
  Printer.EndDoc;
end;
sonnige Grüße

sakura 16. Aug 2006 10:27

Re: Stringrid mehr Seiten drucken
 
Hallo,

lange nicht gelesen :) Du musst die neue Seite selbst initieren. Wenn Du bemerkst, dass Dein Y1 + 50 über die Seitengröße (Printer.Canvas.ClipRect.Bottom) hinaus geht, dann musst Du vorher Printer.NewPage; aufrufen und anschließend Y1 zurücksetzen.

Habe ich mich jetzt verständlich ausgedrückt :gruebel:

...:cat:...

Privateer3000 16. Aug 2006 11:27

Re: Stringrid mehr Seiten drucken
 
hiho sakura,
ja in der Tat lange nicht "gesehen" ;-)
Verstanden habe ich das schon ... aber die umsetzung
ich probiers mal.

Danke auf jeden fall


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 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