![]() |
FastReport, Chart, Merkwürdigkeiten
Liste der Anhänge anzeigen (Anzahl: 2)
Guten Morgen...
nachdem ich das Wochenende kein Ergebnis produzieren konnte nehme ich eure Hilfe in Anspruch. :thumb: 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 :gruebel: 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:
Haftungsausschluß:
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; Diese Quelltextunordnung könnte für eure Augen schmerzhaft sein... Ist dem Herumprobieren erst mal geschuldet. :P Ist es möglich das der Frame dafür verantwortlich ist? Danke für Info´s |
AW: FastReport, Chart, Merkwürdigkeiten
Bist du sicher, daß die in dieser Zeile hinzugefügte Series auch die ist, die in der folgenden Zeile angesprochen wird?
Delphi-Quellcode:
Chart.AddSeries(csLine);
Chart.SeriesData[I].DataType:= dtFixedData; Warum nimmst du nicht gleich den Rückgabewert von AddSeries? Edit: Ich meine in dieser Zeile:
Delphi-Quellcode:
Serie:= Chart.Chart.Series[I];
|
AW: FastReport, Chart, Merkwürdigkeiten
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die schnelle Antwort... :P
Zitat:
Delphi-Quellcode:
...sollte korrekt sein. Ich habe den Serien mal Namen verpaßt entsprechend dem Index I. (Bild) Über das FixedData konnte ich es auch kontrollieren.
Serie:= Chart.Chart.Series[I];
Delphi-Quellcode:
Serie:= Chart.Chart.Series[I];
Serie.Name:= 'Serie' + IntToStr(I); |
AW: FastReport, Chart, Merkwürdigkeiten
Hallo,
kann mir jdm sagen was da der Grund ist? Ich hab genau so ein Problem. Es wird immer 0 ANgezeigt wobwohl ich YDatas manaell habe:
Delphi-Quellcode:
procedure Tform7.DrawRiskChartinFR(MyFRChart: TFrxChartView);
var Serie: TChartSeries; I: integer; Yval: string; id1,id2,id3,i1,i2,i3: double; begin if Assigned(MyFRChart) then begin MyFRChart.Chart.Title.Text[0]:='RC'; MyFRChart.Chart.Legend.LegendStyle:= lsSeries; Serie.BeginUpdate; for I := 0 to 1 do begin MyFRChart.AddSeries(csLine); MYFRChart.SeriesData[I].DataType:= dtFixedData; Serie:= MyFRChart.Chart.Series[I]; if I = 1 then begin Serie.Title:= 'Normal'; MyFRChart.SeriesData[I].XValues:= '1;2;3'; id1:=RoundTo(Lipo9Satz.Idill1,-3); id2:=RoundTo(Lipo9Satz.Idill2,-3); id2:=RoundTo(Lipo9Satz.Idill3,-3); Yval:=format('%f;%f;%f',[13.2,34.4,5.66]); SHowMessage('Y-Vales: '+yval); MyFRChart.SeriesData[I].YValues:= Yval; end else begin Serie.Title:= 'Risk'; MyFRChart.SeriesData[I].XValues:= '1;2;3'; i1:=RoundTo(Lipo9Satz.Idill1,-3); i2:=RoundTo(Lipo9Satz.Idill2,-3); i2:=RoundTo(Lipo9Satz.Idill3,-3); Yval:=format('%f;%f;%f',[113.2,134.5,166.7]); SHowMessage('Y-Vales: '+yval); MyFRChart.SeriesData[I].YValues:= Yval; end; end; Serie.EndUpdate; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 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