AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FastReport und Charts

Ein Thema von FBrust · begonnen am 23. Aug 2007 · letzter Beitrag vom 6. Sep 2007
Antwort Antwort
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#1

FastReport und Charts

  Alt 23. Aug 2007, 11:22
Hallo,

ich bin gerade dabei, einen Report, der mehrere Charts enthält, von QR (dem von D7) nach FastReport 4.3 zu übertragen.

Eins der Charts hat horizontale Balken, deren Farbe je nach ihrem Wert dargestellt wird (als eine Art Ampelsystem). Zu diesem Zweck wird die Farbe in der zugrunde liegenden Tabelle bei der Berechnung der Werte ermittelt und dann abgespeichert.

Im QuickReport-Formular lief dann folgendes ab:

Delphi-Quellcode:
      Series2 := QRChart5.Chart.SeriesList.Series[0];
      Series2.ColorEachPoint := False;
      Series2.Clear;

      with dmReport.tblQRep5a do begin
        Open;
        while not Eof do begin
          colbar2 := StringToColor(FieldbyName('strColor').AsString);
          Series2.Add(FieldbyName('dblValue').AsFloat,
                                     FieldbyName('strName').AsString, colbar2);
          Next;
        end;
      end;
Das funktionierte auch wunderbar.

Für den FastReport-Bericht sieht das ganze so aus:

Delphi-Quellcode:
      with dmFB.qryGetRecordList do begin
        SQL.Text := 'SELECT * FROM QREP_4';
        Open;
        while not eof do begin
          clChart := StringToColor(FieldbyName('STRCOLOR').AsString);
          frChart.Chart.Series[0].Add(FieldbyName('DBLVALUE').AsFloat,
            FieldbyName('STRGRPNAME').AsString, clChart);
          Next;
        end;
        Close;
      end;
      frxReport1.Loadfromfile('qreport.fr3');
      frxReport1.ShowReport;
Und da passiert....nichts. Der Bericht wird zwar angezeigt, aber: Wenn ich im FastReport als Datenquelle für die Serie ein TfrxDBDataset einstelle, werden die Daten aus dieser Datenquelle dargestellt und die Farbe ist für alle gleich (nämlich die voreingestellte), wenn ich "Fixe Daten" auswähle, bleibt das Chart leer.

Wenn ich mit F8 durch den obigen Quelltext gehe, wird auch jede Zeile brav abgearbeitet, aber es wird nichts in Chart eingetragen

Ich habe auch festgestellt, dass die "Add"-Funktion für eine Serie auch dann nicht ausgeführt wird, wenn sie direkt im Script-Editor im OnBeforePrint-Ereignis ausgeführt wird, oder hab ich da was übersehen?

Hat vielleicht jemand eine Idee, was ich noch probieren könnte?


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von Shivan
Shivan

Registriert seit: 5. Mär 2003
Ort: Ravensburg
131 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: FastReport und Charts

  Alt 23. Aug 2007, 12:21
Hi,

Charts mit anderen Farben in FastReport sind nicht so einfach.

1. wird programmatisch immer clTeeColor verwendet (wenn du dir mal frxChartHelpers.pas anschaust)
2. Funktioniert die Add Routine auch irgendwie nicht so richtig bzw. wir haben es auch nicht hinbekommen.

Ich habe den Kollegen bei FastReport folgendes als Vorschlag gegeben, da dies somit zumindest erlaubt in v4 die Farbe zu hinterlegen.

Delphi-Quellcode:
procedure TfrxStdSeriesHelper.AddValues(Series: TChartSeries; const v1, v2,
  v3, v4, v5, v6: String; XType: TfrxSeriesXType);
var
  d: Double;
  s: String;
  c: TColor;
begin
  d := 0;
  if Series.YValues.DateTime then
   d := StrToDateTime(v2)
  else if frxIsValidFloat(v2) then
   d := frxStrToFloat(v2);
  if v3 <> 'then
   s := v3
  else
   s := v1;

  //ab hier der neue Code...
  c := clTeeColor;
  if v4 <> 'then
  try
   c := StringToColor(v4);
  except
  end;

  case XType of
   xtText:
     Series.Add(d, v1, c);
   xtNumber:
     Series.AddXY(frxStrToFloat(s), d, v1, c);
   xtDate:
     Series.AddXY(StrToDateTime(s), d, v1, c);
  end;
end;

Per FastScript im Report geht das dann bspw. so:
Delphi-Quellcode:
myChart.SeriesData[0].Source1 := 'Bez1;Bez2;Bez3';
myChart.SeriesData[0].Source2 := '8;5;2';
myChart.SeriesData[0].Source3 := '1;2;4';
myChart.SeriesData[0].Source4 := 'clRed;clLime;clGreen';
Allerdings nur mit dem Typ "fixe Daten".

Für Farbe aus der Datenbank bräuchte man noch im frxChartEditor.pas eine neue Combobox (respektive für Source4)

Schreib doch auch denen im Online-Support-Form ein neues Ticket... dann kommts vielleicht schneller rein.....

Ich hab als Antwort bekommen:
>>Thanks.
>>We take into consideration your suggestion.

Wenn du übrigens im FastReport-Forum nach "Chart" suchst, findest du auch div. Varianten wie andere User weitere Features der TeeChart in FastScript & Co freigeschaltet haben.

Gruß

Shivan
Markus Stein
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: FastReport und Charts

  Alt 23. Aug 2007, 12:35
Hallo Shivan,

danke für Deine Antwort.

Ich werde mal den entsprechende Code einbauen, die Strings kann ich mir auch zur Laufzeit zusammenbauen...evtl. muss ich sie als Variable übergeben...hoffentlich funktioniert wenigstens das

Und das mit dem Ticket mach ich auf jeden Fall.


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: FastReport und Charts

  Alt 5. Sep 2007, 15:31
Hallo Shivan,

falls es Dich noch interessiert:

Ab Version 4.3.50 ist die Möglichkeit drin, ein Datenbankfeld (String) für die Farbe anzugeben (Ticket hat geholfen ).


Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von Shivan
Shivan

Registriert seit: 5. Mär 2003
Ort: Ravensburg
131 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: FastReport und Charts

  Alt 6. Sep 2007, 06:14
Cool! Na also! )

Geht doch...
Markus Stein
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 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