Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TChart fortlaufende anzeige (https://www.delphipraxis.net/158608-tchart-fortlaufende-anzeige.html)

Hotspott 23. Feb 2011 19:18

Delphi-Version: 5

TChart fortlaufende anzeige
 
Erst mal ein Hallo, an das Ganze Forum :)

Ich hoffe ich bin hier richtig, ansonsten verschieben bitte :D
Sry, aber die sortierung war mir nicht ganz einleuchtend :D

So und nun zum Problem.
Ihr kennt doch sicherlich, wenn man auf Task manager geht, Reiter: Leistung, den CPU Grahpen!?
Der fügt ja irgendwann neue Punkte an und löscht die ersten so das mann immer eine Minute auf den Schirm hat
doch wenn ich ab einer bestimmten länge:
Chart1.Series[0].Delete(0);
ausführ, werden die nächsten Punkte immer an der gleichen stelle eingefügt.

Hat da einer ne Lösung, bei anderen gleichen Themen, die ich über SuFu gefunden habe hat keiner geantwortet, hoffe das mir jemand antwortet :D

Bummi 23. Feb 2011 22:47

AW: TChart fortlaufende anzeige
 
Ich male sowas eigentlich immer selbst, aber änderst Du nach dem löschen von [0] auch die X-Werte der noch vorhandenen Einträge?

Chemiker 23. Feb 2011 23:26

AW: TChart fortlaufende anzeige
 
Hallo Hotspott,

vielleicht selber eine Ringbuffer anlegen und diesen nach jeden neuen Eintrag in die Series schreiben. Ich benutze TDBChart um Messkurven anzuzeigen. In gewissen Zeitabständen wird bei mir die gesamte Series gelöscht und komplett neu nach den neuen Werten wieder aufgebaut.
Das hängt aber immer von der Anzahl der Punkte ab die Angezeigt werden sollen.

Bis bald Chemiker

Hotspott 25. Feb 2011 20:25

AW: TChart fortlaufende anzeige
 
@Bummi
Nein mach ich nicht, sonst hätte ich mir das auch selber erkären können ;)
Trodzdem Danke :)

@Chemiker
Grade das wollte ich um gehen (Code ersparnis).
Aber ich denke es wird nicht anders gehen.
Auch ein Danke an dich :)

Bin trodzdem noch offen für andere Vorschläge

v2afrank 28. Feb 2011 06:57

AW: TChart fortlaufende anzeige
 
So bekommst Du es hin:
Delphi-Quellcode:
procedure TMakrofenster.Series1AfterAdd(Sender: TChartSeries;
  ValueIndex: Integer);

var
 step:Double;
const
 Anzahlsekunden=60;
  begin

    step:=DateTimeStep[dtOnesecond]*Anzahlsekunden;
     With Sender.GetHorizAxis do { <-- with the Horizontal Axis... }
     Begin
      Automatic := False;
      //always show the last time
      Maximum := Sender.XValues.MaxValue;
      // show only last desired interval
      Minimum := Maximum - step;
     end;
     // Delete all "invisible" points
     While (Sender.Count>0) and
      (Sender.XValues[0] < Sender.GetHorizAxis.Minimum) do
      Sender.Delete(0);

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:23 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