Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Fastreport 2025.1 Chart zeigt Lines nicht an (https://www.delphipraxis.net/217197-fastreport-2025-1-chart-zeigt-lines-nicht.html)

norwegen60 20. Mai 2025 09:48

Fastreport 2025.1 Chart zeigt Lines nicht an
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich versuche mit Delphi XE die Fastreport componente TfrxChart zu verwenden, habe jedoch das Problem, dass mir das Chart zwar angezeigt wird, aber ohne die Werte (s. Anhang).
Die Zuweisung erfolgt so:
Delphi-Quellcode:
function TForm1.GetNewSeries(sName: string): TChartSeries;
// ********************************
// DIT-2618, GPa, 2021-10-04
begin
  Result := TLineSeries.Create(nil);

  Result.Pointer.Visible := True;
  Result.LinePen.Visible := True;
  Result.Title := sName;
  Result.Marks.Arrow.Visible := True;
  Result.ShowInLegend := True;
  Result.XValues.DateTime := False;
  Result.Visible := True;
end;

procedure TForm1.btPrintNewChartClick(Sender: TObject);
var
  lFrxChart: TFrxChartView;
  csSeries1: TChartSeries;

begin
  tag := tag + 1;
  // Assing the chart to frxChartView
  lFrxChart := TFrxChartView(frxReport2.FindObject('Chart1'));
  if (lFrxChart <> nil) then
  begin
    lFrxChart.Chart.Title.Caption := Format('Title %d', [tag]);
    csSeries1 := GetNewSeries('Test1');
    lFrxChart.Chart.AddSeries(csSeries1);
    csSeries1.AddXY(0, 12);
    csSeries1.AddXY(1, 150);
    csSeries1.AddXY(2, 100);
    csSeries1.AddXY(3, 180);
  end;

  frxReport2.ShowReport;
end;
Ich habe das Chart dann auf dem Form erzeugt und die Werte auf die gleiche Weise zugeordnet. Das funktioniert einwandfrei. Wenn ich den Chart dann aber per
Delphi-Quellcode:
procedure TForm1.btPrintAssigneChartClick(Sender: TObject);
var
  lFrxChart: TFrxChartView;

begin
  // Assing the chart to frxChartView
  lFrxChart := TFrxChartView(frxReport2.FindObject('Chart1'));
  if (lFrxChart <> nil) then
    lFrxChart.Chart.Assign(chChart);

  frxReport2.ShowReport;
end;
zuweise, wird er Titel korrekt angezeigt, das Chart aber wieder ohne Werte.

Ich habe mir schon die ganzen Properties des TfrxChartView angeschaut, aber nichts gefunden, dass das Anzeigen beeinflusst.

Hat da jemand ein Tip?

PS: Wenn ich die Legende anzeigen lasse, werden die Series dort angezeigt, aber eben keine Lines im Graph selber

Danke
Gerd

norwegen60 22. Mai 2025 20:05

AW: Fastreport 2025.1 Chart zeigt Lines nicht an
 
Mmmh, hat hier niemand eine Idee?

Der schöne Günther 23. Mai 2025 08:35

AW: Fastreport 2025.1 Chart zeigt Lines nicht an
 
Bei mir hat das auch nie wirklich funktioniert, wir gehen stattdessen hin, rendern den TeeChart in eine Vektorgrafik und packen diese dann auf den FastReport.

stifflersmom 23. Mai 2025 09:57

AW: Fastreport 2025.1 Chart zeigt Lines nicht an
 
Hast Du schon mal versucht erst ein PrepareReport anzustoßen und dann anzuzeigen?

Delphi-Quellcode:
frxReport2.PrepareReport;
frxReport2.ShowReport;

norwegen60 23. Mai 2025 12:54

AW: Fastreport 2025.1 Chart zeigt Lines nicht an
 
Zitat:

Zitat von stifflersmom (Beitrag 1548875)
Hast Du schon mal versucht erst ein PrepareReport anzustoßen und dann anzuzeigen?

Delphi-Quellcode:
frxReport2.PrepareReport;
frxReport2.ShowReport;

Das hat leider auch nicht geholfen.

Zitat:

Zitat von Der schöne Günther (Beitrag 1548871)
Bei mir hat das auch nie wirklich funktioniert, wir gehen stattdessen hin, rendern den TeeChart in eine Vektorgrafik und packen diese dann auf den FastReport.

Meinst du per
Delphi-Quellcode:
lPictureView.Picture.Assign(chChart.TeeCreateMetafile(False, Rect(0, 0, Round(lPictureView.Width), Round(lPictureView.Height))));
?
Das habe ich bis jetzt mit den einfachen Reports, wo das Chart schon im Delphi-Form angezeigt wird, auch so gemacht. Jetzt wollte ich aber einen Report aus vielen Seiten erzeugen wo die Charts auf der Delphi-Seite gar nicht existieren, bzw. verschiedene Views aufgerufen werden müssen. In QuickReport war es problemlos möglich den QR-Chart an dieselbe Funktion zu schicken, wie wenn ich ihn für den Delphi-View erzeuge und eigentlich hatte ich irgendwo gelesen, dass auch hinter dem frxChartView.Chart der TeeChart steckt. Aber irgendwie wohl nicht so wirklich.
Vielleicht ist es wirklich die beste Idee, ich erzeuge auch für den langen Report immer ein TeeChart und Assigne dann wie oben beschrieben.

Beim Picture.Assigen muss man aber noch beachte, dass zumindest bei mir (Delphi XE), das Scaling auch nicht funktioniert hat wenn das Windows Screen scaling <> 100% war. Ich assigne deshalb so
Delphi-Quellcode:
procedure AssignAndScaleChart(aPictureView: TFrxPictureView; aChart: TChart);
// *******************************************
// Printout of a Chart was not correct scaled, if screen scaling was bigger than 100%. Here Chart will be scaled correct
var
  rHeight, rWidth: Extended;

begin
  // Save defined sizes
  rHeight := aPictureView.Height;
  rWidth := aPictureView.Width;

  // allow Autosize und Stretch and assign chart
  aPictureView.Stretched := true;
  aPictureView.AutoSize := true;
  aPictureView.Picture.Assign(aChart.TeeCreateMetafile(True, Rect(0, 0, Round(aPictureView.Width), Round(aPictureView.Height))));

  // deactivate Autosize und Stretch
  aPictureView.AutoSize := False;
  aPictureView.Stretched := False;

  // set PictureView to originally defined sizes
  aPictureView.Height := rHeight; //aPictureView.Height * rFactorHeight;
  aPictureView.Width := rWidth; //aPictureView.Width * rFactorWidth;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz