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 Objekt (TSeries) kopieren (https://www.delphipraxis.net/91310-objekt-tseries-kopieren.html)

messie 3. Mai 2007 08:54


Objekt (TSeries) kopieren
 
Moin,

ich habe einen Chart mit einer TLineSeries. Um die Position eines Punktes zu bestimmen, brauche ich den direkten Zugriff auf ein TSeries-Objekt den ich nicht habe.
Wenn ich mit
Delphi-Quellcode:
var
  dummy : TLineSeries;
begin
  dummy := TLineSeries(Chart.Series[0]);
end;
zugreife, löse ich ja den Bezug auf, mit dem ich an anderer Stelle noch Werte anhängen will.
Wie kann ich das Ding kopieren? TLineSeries bietet zwar die Methode assign, die kopiert aber nicht die Datenpunkte mit. Oder kann ich die Referenz trotz des Casts zurückgeben?

Grüße, Messie

sirius 3. Mai 2007 09:00

Re: Objekt (TSeries) kopieren
 
:wiejetzt: Was willst du?

Der pointer dummy zeigt jetzt genau auf deinen Graphen, wenn du jetzt dummy.addxy(x,y) machst wird diese Linie verlängert. Genauso kannst du darin auch lesen.

messie 3. Mai 2007 09:10

Re: Objekt (TSeries) kopieren
 
Zitat:

Zitat von sirius
Der pointer dummy zeigt jetzt genau auf deinen Graphen, wenn du jetzt dummy.addxy(x,y) machst wird diese Linie verlängert. Genauso kannst du darin auch lesen.

Klar, nur die TSeries heißt in einer anderen Unit anders (z.B. Series1) und wird dort mit Series1.Addxy gefüttert. Deshalb möchte ich eine Kopie erstellen oder die Referenz zurückgeben wobei die Kopie sinnvoller wäre.

Grüße, Messie

sirius 3. Mai 2007 09:16

Re: Objekt (TSeries) kopieren
 
Du löst keinen Bezug auf.

Du kannst jetzt mit dummy Werte auslesen und später in einer anderen Unit weiter Werte addieren. Ich verstehe das Problem noch nicht.

messie 3. Mai 2007 10:38

Re: Objekt (TSeries) kopieren
 
Zitat:

Zitat von sirius
(...)später in einer anderen Unit weiter Werte addieren. Ich verstehe das Problem noch nicht.

eben nicht später Werte addieren sondern währenddessen in einem anderen Thread Daten schreiben, egal was der User im HauptThread macht (geht hier ums Auswerten/Exportieren/Drucken). Da wollte ich zu einem sicheren Zeitpunkt eine Kopie des Istzustands erzeugen, damit der Nutzer die Daten frei zur Verfügung hat und das Schreiben im anderen Thread weitergeht. So hoffte ich, mir die Synchronisation zu ersparen.

Grüße, Messie

sirius 4. Mai 2007 10:59

Re: Objekt (TSeries) kopieren
 
Ach, du bist bei mehreren Threads?
Und du schreibst parrallel und liest auch gleichzeitig aus?

Ich würde dann mal schauen ob das auslesen eines Wertes in einer , unter synchronize, aufgerufenen Prozedur funktioniert.

messie 4. Mai 2007 12:25

Re: Objekt (TSeries) kopieren
 
Zitat:

Zitat von sirius
Ich würde dann mal schauen ob das auslesen eines Wertes in einer , unter synchronize, aufgerufenen Prozedur funktioniert.

Mir wäre es trotzdem wichtig, daß ich das TChart-Objekt kopieren kann. Denn der User soll damit arbeiten können, mit dem ChartEditor spielen etc. Und wenn ich da jeden Zugriff mit der Datenerfassung synchronisieren müßte, wäre ich selbsmordgefährdet. Zumal ich die Quellen von TeeChart nicht habe.

Grüße, Messie

marabu 4. Mai 2007 12:39

Re: Objekt (TSeries) kopieren
 
Hallo,

unabhängige Arbeitskopien von TChart erzeugst du mit Assign(). Bei Serien verwendest du für diesen Zweck CloneChartSeries() aus der Unit Chart.

Noch ein Thread zu diesem Thema: chart serie zur laufzeit erstellen

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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