Tchart Neuzeichnen

Rund um die LCL und andere Komponenten
Antworten
Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Tchart Neuzeichnen

Beitrag von Vbxler »

Hallo,

ich frage Daten aus einer Datenbank ab und stelle sie in einem Tchart mittels TLineSeries dar.
Bei der ersten Abfrage werden 24 Punkte in einer Schleife zugewiesen: chart_max.AddXY(iZeiger, Serie.Serie1.Wert_max[iZeiger]);
Der Chart wird auch richtig dargestellt (00_24_Punkte.png).
Nächste Abfrage mit 48 Punkten wird auch richtig dargestellt (01_48_Punkte.png),
bei der dritten Abfrage mit 24 Punkten wird aber der vorherige Chart nicht gelöscht (02_24_Punkte.png)


Frage:
Wie muss ich das richtig machen, das vor dem erneuten zuweisen
von Messpunkten der alte Chart zurückgesetzen bzw.gelöschen wird?

Danke
Dateianhänge
02_24_Punkte.png
02_24_Punkte.png (3.97 KiB) 675 mal betrachtet
01_48_Punkte.png
01_48_Punkte.png (3.99 KiB) 675 mal betrachtet
00_24_Punkte.png
00_24_Punkte.png (2.98 KiB) 675 mal betrachtet
Vbxler
-------------------------

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Tchart Neuzeichnen

Beitrag von Michl »

Du könntest einfach ein LineSeries.Clear aufrufen, bevor du die LineSeries wieder neu füllst. Was ich persönlich für die beste Variante halte.

Du kannst aber auch die vorderen Punkte stehen lassen, indem du einfach die Punkte von hinten nach vorn löschst z.B.:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);  //Füllen
var
  i, SomeCount: Integer;
begin
  SomeCount := 48;
  for i := Chart1LineSeries1.Count to SomeCount - 1 do
    Chart1LineSeries1.AddXY(i, Random(100));
end;
 
procedure TForm1.Button2Click(Sender: TObject);  //Leeren
var
  i, SomeCount: Integer;
begin
  SomeCount := 24;
  while Chart1LineSeries1.Count > SomeCount do
    Chart1LineSeries1.Delete(Chart1LineSeries1.Count - 1);
end;  
Dies hat den Nachteil, falls sich die Daten in der Datenbank in der Zwischenzeit geändert haben, sind immer noch die alten Daten im Chart zu sehen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Vbxler
Beiträge: 129
Registriert: Sa 25. Mai 2013, 07:43
OS, Lazarus, FPC: Win7_x64 (FPC:4.7.1)
CPU-Target: 32Bit

Re: Tchart Neuzeichnen

Beitrag von Vbxler »

Danke für die Hilfe!

Ich lösche jetzt vor der Neuerstellung die gesamte Serie:

Code: Alles auswählen

  while Chart1LineSeries1.Count > 0 do Chart1LineSeries1.Delete(Chart1LineSeries1.Count - 1);
Funktioniert bestens!
Vbxler
-------------------------

Antworten