Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringgrid drucken (https://www.delphipraxis.net/72553-stringgrid-drucken.html)

Murcielago82 2. Jul 2006 20:28


Stringgrid drucken
 
Hallo ich drucke mein StringGrid so:
Delphi-Quellcode:
procedure StringGrid_drucken(sGrid: TStringGrid; 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 := 12;
  Printer.Canvas.Font.Style := [fsBold, fsUnderline];
  Printer.Canvas.TextOut(0, 100, Printer.Title);
  for F := 1 to sGrid.ColCount - 1 do
  begin
    X1 := 0;
    for TmpI := 1 to (F - 1) do
      X1 := X1 + 5 * (sGrid.ColWidths[TmpI]);
    Y1 := 300;
    X2 := 0;
    for TmpI := 1 to F do
      X2 := X2 + 5 * (sGrid.ColWidths[TmpI]);
    Y2 := 450;
    TR := Rect(X1, Y1, X2 - 30, Y2);
    Printer.Canvas.Font.Style := [fsBold];
    Printer.Canvas.Font.Size := 7;
    Printer.Canvas.TextRect(TR, X1 + 50, 350, sGrid.Cells[F, 0]);
    Printer.Canvas.Font.Style := [];
    for TmpI := 1 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;
Bekomme so aber nur den Inhalt. Will aber auch die Gitterlinien haben weiss einer wie?

mkinzler 2. Jul 2006 20:34

Re: Stringgrid drucken
 
Wenn du den Inhalt (Text) der Zellen "malst" mußt du halt zusätzlich die Rahmen malen.

Murcielago82 2. Jul 2006 21:06

Re: Stringgrid drucken
 
Hast du nen Vorschlag? Mit 'malen' kenne ich mich gar nicht aus

mkinzler 2. Jul 2006 21:14

Re: Stringgrid drucken
 
Die Canvas-Klasse kennt auch die Methode .Rectangle welche ein Rechteck zeichnet.

Murcielago82 2. Jul 2006 21:47

Re: Stringgrid drucken
 
Hi, kannst du mir das ein wenig erklären? Habe die procedure aus einen Schweizer Forum. Darum fällt es mir jetzt auch ein wenig schwer damit klarzukommen.
Delphi-Quellcode:
Printer.Canvas.TextRect(TR, X1 + 50, 350, sGrid.Cells[F, 0]);
Damit zeichnet er doch die Zeile oder?

mkinzler 2. Jul 2006 22:05

Re: Stringgrid drucken
 
Zitat:

Zitat von Murcielago82
Hi, kannst du mir das ein wenig erklären? Habe die procedure aus einen Schweizer Forum. Darum fällt es mir jetzt auch ein wenig schwer damit klarzukommen.
Delphi-Quellcode:
Printer.Canvas.TextRect(TR, X1 + 50, 350, sGrid.Cells[F, 0]);
Damit zeichnet er doch die Zeile oder?

Ja.

und die Methode .Rectangle ist wie folgt definiert:
Zitat:

Zitat von Delphi-Hilfe
Delphi-Quellcode:
procedure Rectangle(X1: Integer; Y1: Integer; X2: Integer; Y2: Integer);

Du mußt also nur noch die koordinaten des Punktes links oben und des Punktes recht unten des Rechteckes hier eintragen.

Murcielago82 2. Jul 2006 22:18

Re: Stringgrid drucken
 
Ist das nicht nur der procedur Kopf?

mkinzler 2. Jul 2006 22:24

Re: Stringgrid drucken
 
Zitat:

Zitat von Murcielago82
Ist das nicht nur der procedur Kopf?

Ja, aber hier sieht man welche Parameter die Methode hat.


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