Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Diagramme wie im Taskmanager mit TChart
OnkelDave - Fr 04.07.03 22:42
Titel: Diagramme wie im Taskmanager mit TChart
Hi,
also ich möchte ein Diagramm erstellen, wie es im Taskmanager bei der CPU Auslastungsanzeige zu sehen ist und zwar mit der Komponente TChart. Ich lese die Daten hierzu aus einer *.log Datei mit einem Timer aus und lasse sie mir anzeigen, dies ist auch soweit kein Problem. Nur wenn ich jetzt mehrere Daten anzeigen möchte, ist schnell der rechte Rand erreicht und es wird über den sichtbaren Bereich hinausgezeichnet. Wie bringe TChart dazu, dass es mitscrollt so wie es bei der CPU Auslastungsanzeige der Fall ist???
Hierzu habe ich schon die Suchfunktion des Forums benutzt, die OH von Delphi und gegooglet habe ich auch schon, jedoch leider ohne Erfolg.
Ich hoffe ihr könnt mir helfen.
Ciao
Delete - Fr 04.07.03 22:50
Entweder löschen und wieder links anfangen. Oder alle paar Sekunden einen um einen paar Sekunden verschobenen Bereich zeichen:
Beispiel mit Zahlen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| |1_____| |21____| |321___| |4321__| |54321_| |654321| |765432| |876543| |
OnkelDave - So 06.07.03 15:49
Danke für den Tipp!!!
Hier für alle, die wissen möchten wie ich es gelöst habe:
Beim OnAfterAdd Ereignis muss man folgendes hinzufügen
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Series1AfterAdd(Sender: TChartSeries; ValueIndex: Integer); begin With Sender.GetHorizAxis do Begin Automatic := False; Maximum := Sender.XValues.MaxValue; Minimum := Maximum - DateTimeStep[dtFiveMinutes]; end; While (Sender.Count>0) and (Sender.XValues[0] < Sender.GetHorizAxis.Minimum) do Sender.Delete(0); end; |
Beim Timer folgendes hinzufügen
Quelltext
1: 2: 3: 4:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Series1.AddXY(Now,random(100)); end; |
Und beim OnFormCreate folgendes:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.FormCreate(Sender: TObject); begin Series1.XValues.Order:=loAscending; Series1.XValues.DateTime:=true; Series1.GetHorizAxis.Increment:=DateTimeStep[dtOneMinute]; Series1.GetHorizAxis.DateTimeFormat:='hh:mm'; Series1.GetHorizAxis.LabelsMultiLine:=false; Chart1.BufferedDisplay:=True; Randomize; Series1.AddXY(now, 0); Timer1.Enabled:=true; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!