![]() |
Chart1.SeriesList erzeugung zur Laufzeit
Ich habe einige Zeilen hinzugefügt zu meinem Programm, damit jetzt die Linien(Reihen zur Laufzeit erzeugt werden. Das habe ich geändert, da ich Probleme mit dem unteren Befehl, da ich ich nach dem löschen, keine neuen Reihen(also Feste vorher in Tchart definierte) erzeugen konnte.
Jetzt ist das Programm mit den hinzzugefügten befehltzeilen wesentlich langsamer, wie kann ich das ändern
Delphi-Quellcode:
procedure TForm2.Button4Click(Sender: TObject);
var y,i,x,z,v : Integer; [b]Var MySeries: TLineseries;////Dies wurde Hinzugefügt[/b] Counter : array[0..1500] of Integer; begin If ComboBox1.ItemIndex = 0 Then Begin for y := 0 to 36 do Counter[y] := 0; for x := Form1.meineListe.count - 1 downto 0 do begin z:=StrToInt(Form1.meineListe.Strings[x]); i:=Form1.meineListe.count-x; for y := 0 to 36 do begin if (z in Form1.werte[y]) then begin Counter[y] := 0; end else begin Inc(Counter[y]); end; Begin [b]MySeries:= TLineseries.Create( Self );;////Dies wurde Hinzugefügt MySeries.ParentChart:= Chart1;;////Dies wurde Hinzugefügt[/b] with Chart1.SeriesList[ y ] do AddXY( i,Counter[y] ); end; end; end; Dies benutze ich zum löschen von TChart
Delphi-Quellcode:
procedure TForm2.SpeedButton1Click(Sender: TObject);
begin Chart1.FreeAllSeries; end; |
Re: Chart1.SeriesList erzeugung zur Laufzeit
Hat niemnand ne Idee, es ist im Moment echt arschlangsam?
|
Re: Chart1.SeriesList erzeugung zur Laufzeit
irgendwie stimmt dein Schleifenaufbau nicht und deine Einrückungen dienen nicht wirklich der Übersicht ;),
Delphi-Quellcode:
in jedem y-Durchlauf wird ein Lineseries erstellt und das ganze x-mal (äußere Schleife).
for x := Form1.meineListe.count - 1 downto 0 do
begin ... for y := 0 to 36 do begin [b]MySeries:= TLineseries.Create( Self );;////Dies wurde Hinzugefügt MySeries.ParentChart:= Chart1;;////Dies wurde Hinzugefügt[/b] with Chart1.SeriesList[ y ] do AddXY( i,Counter[y] ); end; end; end; ungetestet:
Delphi-Quellcode:
Du könntest dir noch überlegen, ob du die x und y-Schleife drehst, somit könntest du dir die obere schleife sparen. Geschwindigkeitsmäßig bremst dich dann aber das strtoint aus, aber das gibts auch Mittel und Wege.
If ComboBox1.ItemIndex = 0 Then
begin for y := 0 to 36 do begin Counter[y] := 0; MySeries:= TLineseries.Create( Self ); MySeries.ParentChart:= Chart1; end; for x := Form1.meineListe.count - 1 downto 0 do begin z:=StrToInt(Form1.meineListe.Strings[x]); i:=Form1.meineListe.count-x; for y := 0 to 36 do begin if (z in Form1.werte[y]) then Counter[y] := 0 else Inc(Counter[y]); Chart1.SeriesList[y].AddXY( i,Counter[y] ); end; end; end; Mfg Frank |
Re: Chart1.SeriesList erzeugung zur Laufzeit
Hallo Thomas,
du erzeugst für meine Begriffe viel zu viele LineSeries. Jede kriegt nur einen einzigen Punkt ab. Überlege nochmal, ob deine Laufvariablen x und y korrekt verschachtelt sind oder ob du sie vertauschen musst. Und erzeuge deine LineSeries in der Außenschleife. Besser ist das. Grüße vom marabu PS: du bist sehr kreativ bei der Vergabe von Bezeichnern. @Frank: bin beim tippen irgendwie eingeschlafen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 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 by Thomas Breitkreuz