AGB  ·  Datenschutz  ·  Impressum  







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

FastReport, Chart, Merkwürdigkeiten

Ein Thema von haentschman · begonnen am 6. Okt 2014 · letzter Beitrag vom 2. Dez 2020
 
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.429 Beiträge
 
Delphi 12 Athens
 
#1

FastReport, Chart, Merkwürdigkeiten

  Alt 6. Okt 2014, 12:16
Guten Morgen...

nachdem ich das Wochenende kein Ergebnis produzieren konnte nehme ich eure Hilfe in Anspruch.

Vorab:
Es ist nicht mein erster Chart mit TChart sowohl als VCL Komponente und auch im FR.

SOLL:
Dynamische Anzahl von Serien mit Werten aus jeweils einer generischen ObjectList. Ich habe mich für einen fertigen Report in einer frxChartview in einem Frame, statt der VCL Komponente, entschieden. Da muß beim Druck nicht extra der Report erzeugt werden und der Kunde sieht exakt das was auf dem Papier herauskommt.
IST:
1. Ein Hinzufügen von Werten mit AddXY ergibt kein Ergebnis. Selbst ein einfaches Add(1) tut nix...
2. Nur ein hinzufügen einer Liste von Werten in Chart.SeriesData[I].XValues / YValues erzeugt einen Chart... aber nur im Designer. Die Vorschau ist leer
3. Übergabe als DataSet soll nicht in Betracht gezogen werden.
4. Sind diverse Properties von außen nicht setzbar? (siehe Bild: X-Achse)(Serie.XValues.DateTime:= True; hat keine Auswirkung)

Bilder:
1. Auschnitt aus Designer mit übergebenen Daten und die Vorschau dazu (aus dem Designer gesartet) PS: Die normale Vorschau aus Delphi gestartet ist auch leer.
2. fehlende Property? Wo finde ich die? Steht Standardmäßig auf "Text"
Delphi-Quellcode:
procedure TPrint.CreateData;
var
  I,J: Integer;
  RecordData: TRecordData;
  CurrentParameter: TDeviceParameter;
  CurrentTimeFrom, CurrentTimeTo: TDateTime;
  Chart: TfrxChartView;
  CurrentSerieIndex: Integer;
  Serie: TChartSeries;

  procedure SetChartProperties;
  begin
    // spezielle nicht vom Kunden einstellbare Properties
    Chart.Chart.Visible:= FRecordDataList.Count > 0; // ohne Wirkung, nur aus Designer direkt :-(
    Chart.Chart.Legend.LegendStyle:= lsSeries;
    Chart.Chart.TopAxis.Visible:= False;
    Chart.Chart.BottomAxis.DateTimeFormat:= 'dd.mm.yyyy hh:nn:ss';
    Chart.Chart.BottomAxis.LabelsMultiLine := True;
    Chart.Chart.BottomAxis.LabelsAlternate:= True;
  end;

  procedure SetCurrentTime;
  begin
    CurrentTimeTo:= Now;
    case FProfile.TimeRangeType of
      trAll:
      begin
        CurrentTimeFrom:= -1;
        CurrentTimeTo:= -1;
      end;
      tr3mo:
      begin
        CurrentTimeFrom:= Now - 90;
      end;
      tr1mo:
      begin
        CurrentTimeFrom:= Now - 30;
      end;
      tr7d:
      begin
        CurrentTimeFrom:= Now - 7;
      end;
      tr24h:
      begin
        CurrentTimeFrom:= Now - 1;
      end;
      tr1h:
      begin
        CurrentTimeFrom:= Now - 0.041;
      end;
      tr30m:
      begin
        CurrentTimeFrom:= Now - 0.0205;
      end;
      trFixed:
      begin
        CurrentTimeFrom:= FProfile.TimeRangeFrom;
        CurrentTimeTo:= FProfile.TimeRangeTo;
      end;
    end;
  end;

begin
  Chart:= TfrxChartView(FReport.FindComponent('chtChart'));
  if Assigned(Chart) then
  begin
    FRecordDataList.Clear;
    SetCurrentTime;
    for I := 0 to FProfile.DeviceParameterList.Count - 1 do
    begin
      CurrentParameter:= FProfile.DeviceParameterList[I];
      // Chart
      Chart.AddSeries(csLine);
      Chart.SeriesData[I].DataType:= dtFixedData;
      // Daten
      FDatabase.GetList(FRecordDataList, CurrentParameter.ParameterID, CurrentTimeFrom, CurrentTimeTo);
      // Serie
      Serie:= Chart.Chart.Series[I];
      Serie.BeginUpdate;
      Serie.Title:= CurrentParameter.DeviceName + ' * ' + CurrentParameter.Name;
      if I = 0 then
      begin
        Serie.HorizAxis:= aTopAxis;
      end;
      Serie.XValues.DateTime:= True;
      Chart.SeriesData[I].XValues:= '';
      Chart.SeriesData[I].YValues:= '';
      for J:= 0 to FRecordDataList.Count - 1 do
      begin
        RecordData:= FRecordDataList[J];
        case CurrentParameter.ParameterType of
          ptAnalog:
          begin
            Chart.SeriesData[I].XValues:= Chart.SeriesData[I].XValues + DateTimeToStr(RecordData.RecordTime);
            Chart.SeriesData[I].YValues:= Chart.SeriesData[I].YValues + RecordData.Measure;
            if J < FRecordDataList.Count - 1 then
            begin
              Chart.SeriesData[I].XValues:= Chart.SeriesData[I].XValues + ';';
              Chart.SeriesData[I].YValues:= Chart.SeriesData[I].YValues + ';';
            end;
// Serie.AddXY(RecordData.RecordTime, StrToFloatDef(RecordData.Measure, 0));
          end;
          ptDigital:
          begin
// Serie.AddXY(RecordData.RecordTime, StrToIntDef(RecordData.Measure, 0));
          end;
        end;
      end;
      Serie.EndUpdate;
    end;
    SetChartProperties;
    frxGlobalVariables['Version']:= 'DIMOWA® - Visual Analyses Client ' + FPreferences.Common.Version;
    frxGlobalVariables['Titel']:= FProfile.MasterDeviceName + ' - ' + FProfile.NameLong;
  end;
end;
Haftungsausschluß:
Diese Quelltextunordnung könnte für eure Augen schmerzhaft sein... Ist dem Herumprobieren erst mal geschuldet.

Ist es möglich das der Frame dafür verantwortlich ist?

Danke für Info´s
Angehängte Grafiken
Dateityp: jpg Designer.jpg (112,7 KB, 27x aufgerufen)
Dateityp: png Property.png (43,4 KB, 31x aufgerufen)
  Mit Zitat antworten Zitat
 


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 16:14 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