AGB  ·  Datenschutz  ·  Impressum  







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

TChart und TLineseries ändern

Ein Thema von LoL · begonnen am 13. Apr 2005 · letzter Beitrag vom 13. Apr 2005
Antwort Antwort
LoL
(Gast)

n/a Beiträge
 
#1

TChart und TLineseries ändern

  Alt 13. Apr 2005, 11:53
Moin

Vielleicht kennt der eine oder andere ja die Komponente TChart. Diese stellt mit hilfe von TLineSeries graphen in einem Chart dar. Nun meine Idee. Ich möchte TLineSeries eine Eigenschaft hinzufügen vom Typ TStrings(Stringlist) wo ich die Daten für die Series drin stehen. Aus der soll dann automatisch die Daten ausgelesen werden und sobald die Stringlist geändert wurde wieder den chart aktualisieren. Soweit so gut.
- Dazu muss ich also eine Eigenschaft vom Typ TStrings TlineSeries hinzufügen
- Die Änderung der Stringliste abfragen und dann aktualisieren

Ist das möglich? Wenn ja wie? Ich weis nicht wie ich das machen soll da TChart und TLineSeries ja verbunden sind, dh immer wenn ich eine neue Series hinzufüge dann added der Chart automatisch eine Series vom Typ TLineSeries. Lässt sich das ändern?

Hoff ich hab das einigermaßen verständlich formuliert
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: TChart und TLineseries ändern

  Alt 13. Apr 2005, 12:07
Hallo,
ja das ist möglich. Stichwort: OOP

Du solltest Dir einen Nachfahren von TLineseries basteln.
Der bekommt dann eine public TStrings property. Objektintern
musst Du aber TStringList verwenden.
Etwa so (wg TStrings ist eine abstrakte Klasse
Delphi-Quellcode:
private
 FStrings : TString;
...
constructor TStringsseries.Create...
...
  FStrings:=TstringList.Create;
TStringList hat das Event OnChange. Darüber kannst Su dann die Aktualisierung starten.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#3

Re: TChart und TLineseries ändern

  Alt 13. Apr 2005, 12:44
Ich hab das bisher so:
Delphi-Quellcode:
type
  TdddLineSeries = class(TLineSeries)
  private
    { Private declarations }
    FData : TStrings;
    property DrawData : TStrings read FData write FData;
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
  end;

implementation

constructor TdddLineSeries.Create(AOwner: TComponent);
begin
  inherited Create(Aowner);
  FData := TStringlist.Create;
end;

Destructor TdddLineSeries.Destroy;
begin
  inherited;
  FreeAndNil(FData);
end;
Wie reagiere ich nun auf die änderung von FData? oder besser gesagt wie reagiere ich auf das OnChange ereignis?
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: TChart und TLineseries ändern

  Alt 13. Apr 2005, 12:48
So
Delphi-Quellcode:
type
  TdddLineSeries = class(TLineSeries)
  private
    { Private declarations } 
    FData : TStrings;
    procedure DrawDataChange(Sender : TObject);
  protected
    { Protected declarations } 
  public
    { Public declarations } 
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    property DrawData : TStrings read FData write FData; // von private hierher geschoben
  published
    { Published declarations } 
  end;

implementation

constructor TdddLineSeries.Create(AOwner: TComponent);
begin
  inherited Create(Aowner);
  FData := TStringlist.Create;
  TStringlist(FData).OnChange:=DrawDataChange;
end;

Destructor TdddLineSeries.Destroy;
begin
  inherited;
  FreeAndNil(FData);
end;

procedure TdddLineSeries.DrawDataChange(Sender : TObject);
begin
  // Hier auf die Änderungen reagieren
end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: TChart und TLineseries ändern

  Alt 13. Apr 2005, 13:00
Würde dann aber die Property noch anpassen.

statt:

property DrawData : TStrings read FData write FData; mach

property DrawData : TStrings read FData write SetData; In SetData machst du dann

fData.Assign(Value) Wobei Value die neue StringList ist. Dadurch verhinderst du speicherlecks.

Das andere Problem dürfte sein, TChart dazu zu bewegen deinen TLineSeries zu verwenden. Und da weiss ich im Moment nichts.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#6

Re: TChart und TLineseries ändern

  Alt 13. Apr 2005, 13:10
WOW danke an eure Hilfe Fettes LOB

Ich hab mir dadurch 100te Zeilen von Code erspart funzt einwandfrei.
@jim_raynor: das ist kein Problem da sie blos ne Instanz von TLineSeries ist

Delphi-Quellcode:
var meineseries : TdddLineSeries;
    sl : TStringlist;
begin
  meineseries := TdddLineSeries.Create(chart);
  Chart.AddSeries(meineseries);
  sl := TStringlist.Create;
  sl.LoadFromFile('...');
  a.DrawData := s;
Fertig
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#7

Re: TChart und TLineseries ändern

  Alt 13. Apr 2005, 13:13
Na dann ist ja gut. Aber du kannst dir die Sache noch etwas vereinfachen:

Delphi-Quellcode:
var meineseries : TdddLineSeries;
begin
  meineseries := TdddLineSeries.Create(chart);
  Chart.AddSeries(meineseries);
  a.DrawData.LoadFromFile('...');
Sollte genauso funktionieren und ist insgesamt schneller
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  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 00:14 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