Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
Delphi 10.4 Sydney
|
Stringrid mehr Seiten drucken
16. Aug 2006, 10:46
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
Peter +++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
|
|
Zitat
|