Autor Beitrag
Luckner
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 17.07.19 12:17 
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:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
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:

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 gibt.

Danke, Luckner

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1193
Erhaltene Danke: 100

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Mi 17.07.19 15:37 
Hallo, was passiert wenn du einen Haltepunkt in die Zeile 76 stellst. Wird der erreicht?
Ich habe bisher nur mit LL gearbeitet, aber das sollte ja ähnlich sein.
In dem Report mit dem drucken willst gibt es die Tabelle?

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
Luckner Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 18.07.19 09:02 
Hallo Sinspin,

der Haltepunkt wird erreicht. Im Report gibt es keine Tabelle, sondern (wie im Demo von Fastreport, ein Cross-Objekt.

Gruß, Luckner
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1193
Erhaltene Danke: 100

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Do 18.07.19 09:48 
Das einzige was mir als Unterschied auffällt ist die Anzahl der Zeilen und Spalten beim füllen des Grids.
Gibt es mehr Ereignisse aus dem Druckprozess die man anzapfen kann um zu erfahren was dann weiter mit den Daten gemacht wird?
Für LL gibt es ein Monitoringprogramm das mir alle Aktionen auflistet die wärend des Drucks erfolgen.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
Luckner Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 18.07.19 10:24 
Hallo,
ein Monitoringprogramm für Druckprozesse von Fastreport in meiner Version 4.6, kenne ich nicht. Ansich ist das anbinden der Variablen oder Datenbankkomponente an Fastreport nicht so problematisch, aber mit den Cross-Objekte habe ich bis jetzt nichts gemacht. Deshalb stehe ich so auf dem Schlauch. Dieses Demo funktioniert sofort und ich sehe da auch keine Unterschiede. Zumindestens nicht in dem Delphi-Code. Ich muß die beiden Komponnenten noch einmal vergleichen. Möglicherweise gibt es dort eine Querverbindung.

Luckner