AGB  ·  Datenschutz  ·  Impressum  







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

TChart Runtime/Designtime unterschiedlich

Offene Frage von "drunky1337"
Ein Thema von drunky1337 · begonnen am 22. Mai 2013 · letzter Beitrag vom 22. Mai 2013
Antwort Antwort
drunky1337

Registriert seit: 19. Mär 2013
Ort: Künzelsau
5 Beiträge
 
Delphi XE3 Architect
 
#1

TChart Runtime/Designtime unterschiedlich

  Alt 22. Mai 2013, 08:19
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:
//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 := '' + 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;
Und hier der Teil den ich als Notfalllösung bereits verwendet hatte
Delphi-Quellcode:
    //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;
Arbeiten tu ich mit Delphi XE3, sollten noch irgendwelche Informationen benötigt werden liefere ich diese gerne nach
Wäre sehr dankbar wenn jemand eine Lösung parat hat

mfg
drunky
Miniaturansicht angehängter Grafiken
chartdesigntime.png   chartruntime.png  
Arthur
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TChart Runtime/Designtime unterschiedlich

  Alt 22. Mai 2013, 08:51
Hallo Leute,
Das Problem welchesich habe ist, dass die Formattierung die ich während der Designtime am TChart anwende, nicht in der Runtime verwendet wird.
Hm, also das konnte ich bei mir (Delphi XE) nicht beobachten. 2 Dinge mache ich anders als du, aber ob das etwas bewirkt, kann ich dir nicht sagen.

1. da sich das Count verändert, wenn ein free stattfindet:
Delphi-Quellcode:
 while Chart1.SeriesList.Count > 0 do
 begin
   Chart1.SeriesList.Items[Chart1.SeriesList.Count-1].Free;
 end;
2. Mache ich kein AddSeries sondern ich mach so:
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;
  Mit Zitat antworten Zitat
drunky1337

Registriert seit: 19. Mär 2013
Ort: Künzelsau
5 Beiträge
 
Delphi XE3 Architect
 
#3

AW: TChart Runtime/Designtime unterschiedlich

  Alt 22. Mai 2013, 10:50
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?
Arthur
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TChart Runtime/Designtime unterschiedlich

  Alt 22. Mai 2013, 10:57
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.
  Mit Zitat antworten Zitat
drunky1337

Registriert seit: 19. Mär 2013
Ort: Künzelsau
5 Beiträge
 
Delphi XE3 Architect
 
#5

AW: TChart Runtime/Designtime unterschiedlich

  Alt 22. Mai 2013, 13:11
Danke für den Tipp ich habe jetzt herausgefunden, dass

ChartMessdaten.ClearChart; 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.
Anscheinend funktioniert es aber auch ohne diese Zeile.

Vielen Dank für die Hilfe
Arthur
  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 11:37 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