![]() |
Teechart kontiunierlich
Noch eine Frage zum Teechart.
Ich möchte Messwerte kontinuierlich in einer Teechart Serie darstellen. Der Vorgang sähe also so aus.
Delphi-Quellcode:
Dann mit dem Eintreffen jedes Messwertes werden alle vorhandenen Werte 1 Stelle nach links verschoben
Chart1.BottomAxis.Automatic := False;
Chart1.BottomAxis.Maximum := 60;// 60 Sekunden dargestellt for i := 1 to 60 do Serie.Addxy(i,0); // Fülle mit 0 Werten und der Messwert angehängt:
Delphi-Quellcode:
Weis wer, ob es in Teechart dafür eine fertige Funktion gibt?
for i := 1 to 59 do
Serie.Value[i] := Serie.Value[i+1]; und dann Serie.Value[60] := neuer Wert; Gruß Peter |
AW: Teechart kontiunierlich
Du kannst die Automatik für Minimum ebenfalls abschalten und den angezeigten Bereich durch setzen von Minimum verschieben. Wenn nötig kannst Du die Werte von vorne her auch löschen
Delphi-Quellcode:
in jedem Fall wirst Du Minimum und Maximum bei überschreiten der 60 Sekunden bei jedem hinzufügen um 1 erhöhen müssen um die gewünschte Darstellung zu erhalten.
Chart1.Series[0].Delete(0);
|
AW: Teechart kontiunierlich
Die Series AfterAdd Methode dürfte die richtige für Dich sein
Delphi-Quellcode:
procedure Series1AfterAdd(Sender: TChartSeries;
ValueIndex: Integer); var step:Double; 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; |
AW: Teechart kontiunierlich
Danke für die Tips.
Ich habe das jetzt so gelöst:
Delphi-Quellcode:
Gruß Peter
procedure TChartData.SerieAdd(Value: Single);
begin if Assigned(ScopeSerie) then begin ScopeSerie.Delete(0); Chart.BottomAxis.Maximum := Chart.BottomAxis.Maximum + 1; Chart.BottomAxis.Minimum := Chart.BottomAxis.Minimum + 1; ScopeSerie.AddXY(Chart.BottomAxis.Maximum, Value); end; end; procedure TChartData.SerieInit(Serie: TChartSeries; Title: string; MaxX, MaxY: Integer; Color: TColor); var i : Integer; begin Chart.BottomAxis.Automatic := False; Chart.BottomAxis.Maximum := MaxX; Chart.BottomAxis.Minimum := 1; Chart.LeftAxis.Automatic := False; Chart.LeftAxis.Maximum := MaxY; ScopeMin := 1; ScopeMax := MaxX; Serie.Color := Color; ScopeSerie := Serie; Chart.Title.Caption := Title; for i := 1 to MaxX do Serie.AddXY(i,0); end; |
AW: Teechart kontiunierlich
Ist das Ding so schlau, dass dem nach ein paar Tagen nicht der Speicher ausgeht weil er sich die ganzen nicht angezeigten Messwerte noch merkt? Ich wollte neulich auch die letzten x Sekunden von Messwerten in einem TeeChart anzeigen lassen und habe lieber immer den ältesten Wert gelöscht und dann hinten wieder einen neuen angefügt...
|
AW: Teechart kontiunierlich
Zitat:
|
AW: Teechart kontiunierlich
Die X-Werte stehen ja trotzdem drin 1.2.3.4... wenn ich den ersten lösche habe ich 2.3.4... muss also MIN anpassen um kein Loch zu bekommen.
|
AW: Teechart kontiunierlich
Vielleicht ist das doch gerade bei Messwerten gewollt? Auf der X-Achse trägt man doch eher die Zeit ein, und gerade das schiebt sich ja... Zumindest hatte ich das so gemacht...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 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