![]() |
TChart Runtime/Designtime unterschiedlich
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Leute,
ich arbeite in meinem Programm mit einem TChart um Messdaten anzuzeigen. Das Problem welchesich habe ist, dass die Formattierung die ich während der Designtime am TChart anwende, nicht in der Runtime verwendet wird. Genaues Beispiel: Ich habe in der Designtime die 3D-Einstellung deaktiviert, den Farbverlauf(Hintergrund) deaktiviert, Achsenbeschriftungen hinzugefügt und noch ein paar Visuelle Änderugen vorgenommen. Wenn ich aber jetzt mein Programm ausführe, dann übernimmt das Chart keine einzige Änderung die ich eingestellt habe. Auf den Bildern sieht man sehr gut was ich meine. Teilweise lösen konnte ich mein Problem indem ich Im Sourcecode mein Chart nochmals bearbeitet habe jedoch ist das eine sehr umständliche Arbeit die sicherlich nicht notwendig ist. Der Code zum erzeugen des Charts sieht so aus
Delphi-Quellcode:
Und hier der Teil den ich als Notfalllösung bereits verwendet hatte
//Series freigeben
for i := ChartMessdaten.SeriesCount-1 DownTo 0 do ChartMessdaten.Series[i].Free; //Befüllen des Chartes for i := 0 to (numberOfSeries -1) do begin ChartMessdaten.AddSeries(TFastLineSeries.Create(self)); //Erstell neue Series ChartMessdaten.Series[i].Name := 'Tü' + IntToStr(i+1); //Durchlaufen der Zeilen for r := 1 to y do begin ChartMessdaten.Series[i].AddXY(strtofloat(StringGridMessDaten.Cells[1,r]), strtofloat(StringGridMessDaten.Cells[temp+numberofSeries,r])); //Beziehe Daten aus StringGrid (Spalte 1 (Zeit) und Variable Spalte (T1..TüX) end; temp := temp + 1; //Datenquelle für die Series erhöhen (nächste Spalte aus dem StringGrid) end;
Delphi-Quellcode:
Arbeiten tu ich mit Delphi XE3, sollten noch irgendwelche Informationen benötigt werden liefere ich diese gerne nach ;)
//Formattierung des Charts
ChartMessdaten.View3D := false; ChartMessdaten.Title.Caption := 'MESS_ID: ' + cdsBT_Messdaten.FieldByName('MESS_ID').AsString; ChartMessdaten.Title.Font.Size := 11; ChartMessdaten.Title.Font.Style := [fsBold]; ChartMessdaten.LeftAxis.Title.Caption := 'Temperatur (K)'; ChartMessdaten.BottomAxis.Title.Caption := 'Zeit'; ChartMessdaten.LeftAxis.Title.Font.Size := 11; ChartMessdaten.LeftAxis.Title.Font.Style := [fsBold]; ChartMessdaten.BottomAxis.Title.Font.Size := 11; ChartMessdaten.BottomAxis.Title.Font.Style := [fsBold]; ChartMessdaten.Gradient.Visible := false; ChartMessdaten.Color := clWhite; Wäre sehr dankbar wenn jemand eine Lösung parat hat :thumb: mfg drunky |
AW: TChart Runtime/Designtime unterschiedlich
Zitat:
1. da sich das Count verändert, wenn ein free stattfindet:
Delphi-Quellcode:
2. Mache ich kein AddSeries sondern ich mach so:
while Chart1.SeriesList.Count > 0 do
begin Chart1.SeriesList.Items[Chart1.SeriesList.Count-1].Free; end;
Delphi-Quellcode:
while not tblSerNr2.Eof do
begin if not tblDok.Eof then begin lSeries := TLineSeries.Create(self); lSeries.ParentChart := Chart1; lSeries.Title := 'Temperatur '+tblSerNr2.FieldByName('Seite').AsString; lSeries.LinePen.Style := lStyle; if btnBW.Down then begin lSeries.SeriesColor := clBlack; end else begin lSeries.SeriesColor := lcColor[j]; end; if ord(lStyle) > 5 then lStyle := psDash else inc(lStyle); for i := 0 to 119 do begin sField := Format('Dampftemperatur%d',[i]); if tblDok.FieldByName(sField).AsFloat > 0 then lSeries.AddXY(i*3,tblDok.FieldByName(sField).AsFloat); end; end; tblserNr2.Next; inc(j); end; |
AW: TChart Runtime/Designtime unterschiedlich
Hi,
danke schon mal für die Antwort, leider kann ich deine Lösung nicht auf mein Problem übertragen, Zu Punkt 1.)in meiner Free Schleife fang ich deshalb beim höchsten Index an (i := ChartMessdaten.SeriesCount-1) und geh dann runter bis 0. Das funktioniert auch einwandfrei daran sollte es nicht scheitern. Zu Punkt 2.)Die Series die ich erzeuge bekommen als Datenquelle bestimmte Spalten aus einem StringGrid, jenachdem welchen Datensatz ich in meiner Datenbank auswähle, befinden sich die notwendigen Spalten an anderen Positionen. Mithilfe meines Algorithmus den ich verwende, bekommt jede Series die Richtige Spalte als Datenquelle und sollte somit eigentlich auch nicht das Problem sein. Hast du oder sonst jemand noch eine Idee was das Problem sein könnte? |
AW: TChart Runtime/Designtime unterschiedlich
Mach dir ein kleines Testprogramm. Ziehe ein Chart drauf verändere mal nur die 3D-Eigenschaft und lass es laufen. Sollte die Eigenschaft 3D zur Runtime genauso dargestellt werden wie zur Designtime, musst du wohl mal paar Zeilen in deinem Programm auskommentieren (am Besten erstmal alles was mit dem Chart zu tun hat) um den Fehler einzugrenzen.
|
AW: TChart Runtime/Designtime unterschiedlich
Danke für den Tipp ich habe jetzt herausgefunden, dass
Delphi-Quellcode:
die Ursache war. Hatte mir nur gedacht, dass bevor ich ein (neues) Chart zeichne, sollte ich das davor "clearen" damit keine Überschneidungen vorkommen können.
ChartMessdaten.ClearChart;
Anscheinend funktioniert es aber auch ohne diese Zeile. Vielen Dank für die Hilfe:thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 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