AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Zur Designetime erzeugte TeeChart.Series per Name ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

Zur Designetime erzeugte TeeChart.Series per Name ansprechen

Ein Thema von norwegen60 · begonnen am 1. Mär 2019 · letzter Beitrag vom 5. Mär 2019
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
522 Beiträge
 
Delphi 12 Athens
 
#1

Zur Designetime erzeugte TeeChart.Series per Name ansprechen

  Alt 1. Mär 2019, 12:45
Delphi-Version: XE
Hallo zusammen,

ich erzeuge per
Delphi-Quellcode:
    lsSeries := TLineSeries.Create(nil);

    lsSeries.Name := 'lsAverage';
    lsSeries.Title := 'Average';
    lsSeries.Marks.Visible := False;
    lsSeries.ValueFormat := '0.#';
    lsSeries.LinePen.Width := 1;
    lsSeries.XValues.DateTime := False;
    lsSeries.XValues.Order := loAscending;
    lsSeries.YValues.Order := loNone;
    lsSeries.SeriesColor := clBlue;
    lsSeries.Pointer.Visible := False;

    Chart1.AddSeries(lsSeries);
eine TLineSeries.

Wie kann ich die nun später im Code über den Namen lsAverage ansprechen um z.B. Daten zu laden (und nicht über den Index Chart1.Series[1].AddXY(Xvalue, Yvalue); )


Danke
Gerd
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
715 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zur Designetime erzeugte TeeChart.Series per Name ansprechen

  Alt 1. Mär 2019, 14:23
Hallo zusammen,

ich erzeuge per
Delphi-Quellcode:
    lsSeries := TLineSeries.Create(nil);

    lsSeries.Name := 'lsAverage';
    lsSeries.Title := 'Average';
    lsSeries.Marks.Visible := False;
    lsSeries.ValueFormat := '0.#';
    lsSeries.LinePen.Width := 1;
    lsSeries.XValues.DateTime := False;
    lsSeries.XValues.Order := loAscending;
    lsSeries.YValues.Order := loNone;
    lsSeries.SeriesColor := clBlue;
    lsSeries.Pointer.Visible := False;

    Chart1.AddSeries(lsSeries);
eine TLineSeries.

Wie kann ich die nun später im Code über den Namen lsAverage ansprechen um z.B. Daten zu laden (und nicht über den Index Chart1.Series[1].AddXY(Xvalue, Yvalue); )


Danke
Gerd
Versuch mal

lSeries := Chart1.Series.FindComponent('lsAverage') as TLineSeries; Ich weis nicht, ob Chart1.AddSeries den Owner des übergebenen Objektes setzt, wenn er Nil ist, und wenn ja, was als Owner verwendet wird. Sieh mal im Sourcecode nach.
Peter Below
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
522 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zur Designetime erzeugte TeeChart.Series per Name ansprechen

  Alt 2. Mär 2019, 17:39
Versuch mal

lSeries := Chart1.Series.FindComponent('lsAverage') as TLineSeries; Ich weis nicht, ob Chart1.AddSeries den Owner des übergebenen Objektes setzt, wenn er Nil ist, und wenn ja, was als Owner verwendet wird. Sieh mal im Sourcecode nach.
Nein, das funktioniert nicht. Beim Aufruf von Chart1.Series wird der Index erwartet.
Suche über Chart1.FindComponent oder Chart1.SeriesGroup.FindComponent gibt nil zurück
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
715 Beiträge
 
Delphi 12 Athens
 
#4

AW: Zur Designetime erzeugte TeeChart.Series per Name ansprechen

  Alt 3. Mär 2019, 12:21
Versuch mal

lSeries := Chart1.Series.FindComponent('lsAverage') as TLineSeries; Ich weis nicht, ob Chart1.AddSeries den Owner des übergebenen Objektes setzt, wenn er Nil ist, und wenn ja, was als Owner verwendet wird. Sieh mal im Sourcecode nach.
Nein, das funktioniert nicht. Beim Aufruf von Chart1.Series wird der Index erwartet.
Suche über Chart1.FindComponent oder Chart1.SeriesGroup.FindComponent gibt nil zurück
Kompisch. Laut Hilfe gibt TChart.Series ein Objekt des Type TChartSeries zurück. Das hat eine default property, die indizierten Zugriff erlaubt, aber TChartSeries stammt von TComponent ab, erbt also auch die FindComponent-Methode.

Du erzeugst in deinem Kode doch die TLineSeries direkt. Gib doch einfach anstelle von nil Chart1 als Owner an den Constructor. dann sollte Chart1.FindCOmponent funktionieren.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von newIndy
newIndy

Registriert seit: 18. Dez 2018
29 Beiträge
 
Delphi XE3 Professional
 
#5

AW: Zur Designetime erzeugte TeeChart.Series per Name ansprechen

  Alt 3. Mär 2019, 14:30
// so funktioniert es:
Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
var Kurve:TBitmap;
    Chart1:TChart;
    lsSeries:TLineSeries;
begin
     try
        Chart1 := TChart.Create(Self);
        lsSeries := TLineSeries.Create(Chart1);
        lsSeries.BeginUpdate;
        lsSeries.Name := 'lsAverage';
        lsSeries.Title := 'Average';
        lsSeries.Marks.Visible := False;
        lsSeries.ValueFormat := '0.#';
        lsSeries.LinePen.Width := 1;
        lsSeries.XValues.DateTime := False;
        lsSeries.XValues.Order := loAscending;
        lsSeries.YValues.Order := loNone;
        lsSeries.SeriesColor := clBlue;
        lsSeries.Pointer.Visible := False;
        lsSeries.ParentChart := Chart1; // !
        lsSeries.FillSampleValues(100);
        lsSeries.EndUpdate;
        Kurve := Chart1.TeeCreateBitmap(clWhite, Image1.ClientRect, pf24bit);
        Image1.Canvas.Draw(0,0, Kurve);
     finally
        Kurve.Free;
        lsSeries.Free;
        Chart1.Free;
     end;
end;
mfG newIndy
Angehängte Grafiken
Dateityp: jpg lsSeries.jpg (177,2 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von newIndy
newIndy

Registriert seit: 18. Dez 2018
29 Beiträge
 
Delphi XE3 Professional
 
#6

AW: Zur Designetime erzeugte TeeChart.Series per Name ansprechen

  Alt 4. Mär 2019, 20:43
Delphi-Quellcode:
        
for i := 0 to 30 do if (lsSeries as TLineSeries).Name = 'lsAverage'
            then (lsSeries as TLineSeries).Add(Random);
           //lsSeries.FillSampleValues(100);
        for i := 0 to 30 do if
            (Chart1.FindComponent('lsAverage') as TLineSeries).Name = 'lsAverage'
            then (Chart1.FindComponent('lsAverage') as TLineSeries).Add(Random);
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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-2025 by Thomas Breitkreuz