2016-04-25 22 views
1

Ich verwende TChart Komponente den Fortschritt einer Aufgabe zu zeigen, wird der Fortschritt angezeigt dynamisch, etwa wie folgt:Wie halten den Fortschritt einer Aufgabe angezeigt wird dynamisch durch die alte Clearing mit TChart Komponente

enter image description here

Ich setze den Maximalwert der unteren Achse auf 50, wenn also dieser Wert überschritten wird, wird kein Diagramm angezeigt. Wie kann ich mich halten kann dynamisch den Fortschritt der Aufgabe zeigt, die von den alten Clearing- und starten Sie den neuen Fortschritt zeigt, denke ich, es so etwas wie sein sollte:

while Progress do 
begin 
    if series1.bottomaxis.value = maxvalue then 
    Series1.clear; 
end; 
series1.add(x,y); 

Nun, das war einfach zu erklären, was ich tun möchte, . Wie kann ich den Fortschritt anzeigen, ohne den Maximalwert zu ändern?

Antwort

0

Die einfachste Lösung zum Auffüllen von Datenreihen mit neuen Daten besteht darin, die Methode AddXY zum Hinzufügen von Punkten zu einer Serie zu verwenden. Ein großer Vorteil dieser Methode ist, dass sie sehr einfach zu benutzen ist. Dies ist die bevorzugte Methode zum Hinzufügen von Punkten, wenn Sie in Echtzeit zeichnen und die Anzahl der angezeigten Punkte ein paar Tausend nicht überschreitet. Zusammen mit TChartSeries.Delete Methode bietet es eine leistungsfähige Methode, um Echtzeit-Plotten zu tun. Die folgenden zwei Routinen werden in einem der TeeChart-Beispiele verwendet, um das Diagramm in Echtzeit zu scrollen. Zunächst wird die Routine neue Punkte auf die Reihe fügt hinzu zweite eine Routine scrollt Punkte als neue Daten hinzugefügt und löscht alte unecessary Punkte:

// Adds a new random point to Series 
    Procedure RealTimeAdd(Series:TChartSeries); 
    var XValue,YValue : Double; 
    begin 
    if Series.Count=0 then // First random point 
    begin 
     YValue:=Random(10000); 
     XValue:=1; 
    end 
    else 
    begin 
     // Next random point 
     YValue:=Series.YValues.Last+Random(10)-4.5; 
     XValue:=Series.XValues.Last+1; 
    end; 
    // Add new point 
    Series.AddXY(XValue,YValue); 
    end; 

    // When the chart is filled with points, this procedure 
    // deletes and scrolls points to the left. 
    Procedure DoScrollPoints(Series: TChartSeries); 
    var tmp,tmpMin,tmpMax : Double; 
    begin 
    // Delete multiple points with a single call. 
    // Much faster than deleting points using a loop. 

    Series.Delete(0,ScrollPoints); 

    // Scroll horizontal bottom axis 
    tmp := Series.XValues.Last; 
    Series.GetHorizAxis..SetMinMax(tmp-MaxPoints+ScrollPoints,tmp+ScrollPoints); 

    // Scroll vertical left axis 
    tmpMin := Series.YValues.MinValue; 
    tmpMax = Series.YValues.MaxValue; 

    Series.GetVertAxis.SetMinMax(tmpMin-tmpMin/5,tmpMax+tmpMax/5); 

    // Do chart repaint after deleting and scrolling 
    Application.ProcessMessages; 
    end; 

Weitere Informationen über Echtzeit Charting, lesen Sie bitte den Artikel here .

+0

Eine Antwort, die nur aus einem Link zu einem externen Standort besteht, ist nicht akzeptabel. Wenn dieser externe Standort nicht verfügbar ist, verliert die davon abhängige Antwort den gesamten Wert. Der relevante Teil dieses externen Inhalts sollte hier in der Antwort selbst sein, wobei der Link als zusätzliche Referenz verwendet wird. Wenn das nicht möglich ist, sollte dies stattdessen ein Kommentar zu der Frage sein, weil es keine Antwort ist. –

+0

@KenWhite ok, ich habe hier den relevantesten Teil des Artikels entsprechend der Frage bearbeitet. –