Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Stringgrid mit Fastreport ausdrucken (https://www.delphipraxis.net/201359-stringgrid-mit-fastreport-ausdrucken.html)

Luckner 15. Jul 2019 16:51

Stringgrid mit Fastreport ausdrucken
 
Hallo,
ich würde gerne ein Stringgrid über den Fastreport ausdrucken. In dem Fastreport-Verzeichniss gibt es ein Demo, das wunderbar funktioniert. Das habe ich versucht für mich anzupassen, aber es funktioniert nicht.
Hier das Demo-Bespiel:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  frxClass, StdCtrls, Grids, frxCross;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    frxCrossObject1: TfrxCrossObject;
    frxReport1: TfrxReport;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure frxReport1BeforePrint(c: TfrxReportComponent);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  i, j: Integer;
begin
  for i := 1 to 16 do
    for j := 1 to 16 do
      StringGrid1.Cells[i - 1, j - 1] := IntToStr(i * j);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  frxReport1.ShowReport;
end;

procedure TForm1.frxReport1BeforePrint(c: TfrxReportComponent);
var
  Cross: TfrxCrossView;
  i, j: Integer;
begin
  if c is TfrxCrossView then
  begin
    Cross := TfrxCrossView(c);
    for i := 1 to 16 do
      for j := 1 to 16 do
        Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]);
  end;
end;

end.
Hier meine Version:
Delphi-Quellcode:
procedure TForm1.ButtonGejoDruckenClick(Sender: TObject);
begin
  frxReportGejo.ShowReport;
end;

procedure TForm1.frxReportGejoBeforePrint(c: TfrxReportComponent);
var
  Cross: TfrxCrossView;
  i, j: Integer;
begin
  if c is TfrxCrossView then
  begin
    Cross := TfrxCrossView(c);
    for i := 1 to 5 do
      for j := 1 to GridGejo.RowCount do
        Cross.AddValue([i], [j], [GridGejo.Cells[i - 1, j - 1]]);
  end;
end;
Wobei GridGejo das besagte Stringrid ist. Das Ergebniss ist, dass im Preview von Fastreport eine leere Seite entsteht. Hat möglicherweise Jemand eine Idee, woran das liegen kann?

Irgendwie habe ich das Gefühl, dass es keine Verbindung zwischen dem Report und der Cross-Komponente.

Danke, Luckner

Luckner 18. Jul 2019 10:26

AW: Stringgrid mit Fastreport ausdrucken
 
Hallo,

hat noch Keiner mit einem Stringgrid in Verbindung mit Fastreport gearbeitet?

Gruß, Luckner

franktron 18. Jul 2019 10:58

AW: Stringgrid mit Fastreport ausdrucken
 
Du könntest mal Probieren die Cross Komp. im onprint des Bandes zu erzeugen das hilft ab und zu bei Fastreport

Luckner 22. Jul 2019 14:42

AW: Stringgrid mit Fastreport ausdrucken
 
Hallo franktron,

hat etwas länger gedauert mit der Antwort. habe an einem anderem Projekt gearbeitet. Jetzt bin ich wieder Ohr. Was mich wundert, dass dieses Demo auf Anhieb funktioniert. Und ich sehe dort auch keine großartigen, komplexen Routinen. Die Bedeutung des Cross-Objektes verstehe ich auch nicht, weil es irgendwie keine Verknüpfung gibt, zwischen der frxReports gibt.
Hat sich schon Jemand dieses Demo mal angeschaut, oder eigene Routine für Fastreport geschrieben. Über jeden Hinweis wäre ich glücklich.

Gruß, Luckner

KJN 22. Jul 2019 18:59

AW: Stringgrid mit Fastreport ausdrucken
 
Hallo,

probier mal im FastReport Designer,
das CrosstabObject direkt auf die Seite zu legen, und nicht in ein Band.

Im Cross Tab Editor Row auf 0, Columns auf 0, Celles auf 1 setzen.
Haken bei Show Title raus.

Bei mir geht's dann.


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