AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit TChart, Function High

Ein Thema von Hallo_Thomas · begonnen am 23. Okt 2005 · letzter Beitrag vom 23. Okt 2005
Antwort Antwort
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

Problem mit TChart, Function High

  Alt 23. Okt 2005, 13:11
Hallo,

Irgendwie schaff ichs nicht, der Series1 den Chart1.SeriesList[ 0 ] zuzuordnen, um den höchsten Punkt zu ermitteln.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,IniFiles, ExtCtrls, TeeProcs, TeEngine, Chart, Series;

type
  TForm1 = class(TForm)
    Chart1: TChart;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
    MeineListe:TStrings;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i,Zahl:Integer;
begin
  meineListe:=TStringList.Create;
  for i:=0 to 10 do
    begin
      Zahl := random(100);
      meineListe.Insert(0,IntToStr(Zahl));
    end;
end;

procedure TForm1.FormShow(Sender: TObject);
var i:Integer;
  MySeries: TLineseries;
begin
  MySeries:= TLineseries.Create( Self );
  MySeries.ParentChart:= Chart1;
  for i:=0 to 10 do
    begin
      with Chart1.SeriesList[ 0 ] do
          AddXY( i,StrtoInt(meineListe.Strings[i]));
     end;
end;

end.

Fehlermeldung:

Erste Zufalls-Exception bei$7C81EB833.Exception-Klasse ChartException mit Meldung 'No valid DataSource: Series1' Prozess Project1.exe(1240)
Angehängte Dateien
Dateityp: zip chart_212.zip (338,0 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Problem mit TChart, Function High

  Alt 23. Okt 2005, 14:44
Hallo Thomas,

so geht es ohne Exception:

Delphi-Quellcode:
procedure TMainForm.ActionButtonClick(Sender: TObject);
var
  ls: TLineSeries;
  i: integer;
begin
  ls := TLineSeries.Create(myChart);
  myChart.AddSeries(ls);
  for i := 1 to 10 do
    with ls do
      AddXY(i, Random(100));
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Problem mit TChart, Function High

  Alt 23. Okt 2005, 20:10
Wunderbar,dass funkrioniert,aber kaum habsch ein Türchen geöffnet,gibts für mich2 neue verschlossene.

Nun schaff ichs nicht den einen Chart wieder zu löschen.

Bei,
Chart2.FreeAllSeries; werden ja alle series glöscht.
Wie kann ich die Function High von TChart zur Laufzeit danach wieder erstellen?



Delphi-Quellcode:
ls: TLineSeries;
  i: integer;
begin
  ls := TLineSeries.Create(Chart1);
  Chart1.AddSeries(ls);
  for i := 1 to 10 do
  begin
    with ls do
      AddXY(i, Random(100));
  end;
  Series1.DataSource:=ls;
end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Problem mit TChart, Function High

  Alt 23. Okt 2005, 21:56
Wenn du dir den Pointer ls auf die von dir dynamisch erstellte LineSeries zwischenspeicherst, dann kannst du die Serie direkt freigeben, ansonsten über ihren Container:

Delphi-Quellcode:
ls.Free; // entweder
myChart.SeriesList.Series[0].Free; // oder
Den Index bei der zweiten Alternative musst du natürlich korrigieren, falls es sich einmal nicht um die erste Serie handelt. Und wenn du der Serie beim Erzeugen einen Namen oder einen Tag-Wert verpasst, dann kannst du sie auch über diese Angaben wieder indentifizieren, wenn du durch die SeriesList iterierst. Wenn es die einzige LineSeries ist, dann genügt der Typ zur Identifikation.

marabu
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Problem mit TChart, Function High

  Alt 23. Okt 2005, 23:29
Hab gerad noch mah eh bissl gewerkelt und habs so gelöst


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
  MySeries: TLineseries;
begin
  for i:=0 to 1 do
  begin
    MySeries:= TLineseries.Create( Self );
    MySeries.ParentChart:= Chart1;
  end;
  for i:=0 to 10 do
    begin
      with Chart1.SeriesList[ 0+1 ] do
          AddXY( i, Random(100));
     end;
    Chart1.SeriesList[0].SetFunction(THighTeeFunction.Create(self));
    Chart1.SeriesList[0].DataSource:=Chart1.SeriesList[ 0+1 ];
end;
  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 10:01 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