Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
526 Beiträge
 
Delphi 12 Athens
 
#5

AW: Fastreport 2025.1 Chart zeigt Lines nicht an

  Alt 23. Mai 2025, 12:54
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.

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 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;

Geändert von TBx (Heute um 20:51 Uhr)
  Mit Zitat antworten Zitat