Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Chart1.SeriesList erzeugung zur Laufzeit (https://www.delphipraxis.net/49888-chart1-serieslist-erzeugung-zur-laufzeit.html)

Hallo_Thomas 17. Jul 2005 19:15


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;

Hallo_Thomas 18. Jul 2005 19:25

Re: Chart1.SeriesList erzeugung zur Laufzeit
 
Hat niemnand ne Idee, es ist im Moment echt arschlangsam?

Keldorn 18. Jul 2005 20:22

Re: Chart1.SeriesList erzeugung zur Laufzeit
 
irgendwie stimmt dein Schleifenaufbau nicht und deine Einrückungen dienen nicht wirklich der Übersicht ;),
Delphi-Quellcode:
  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;
in jedem y-Durchlauf wird ein Lineseries erstellt und das ganze x-mal (äußere Schleife).

ungetestet:
Delphi-Quellcode:
  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;
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.

Mfg Frank

marabu 18. Jul 2005 20:39

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 01:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz