Moin !
Ich versuche gerade aus einem temporären nicht sichtbaren TChart eine Serie in ein anderes sichtbares TChart zu kopieren. TChart bietet da Funktionen an wie CloneChartSeries. Aber das funktioniert leider nicht richtig mit dem Kostrukt was ich hier habe:
Delphi-Quellcode:
// Dummy Chart erzeugen
tmpEmpty := TChart.Create(nil); { Create an empty chart }
tmpEmpty.Parent := Self;
try
LoadChartFromStream(TCustomChart(tmpEmpty), Stream); // Dummy Chart mit Stream füllen
TargetChart.AddSeries(CloneChartSeries(tmpEmpty[0])); // Serie 0 Clonen
TargetChart[TargetChart.SeriesCount - 1].Assign( tmpEmpty[0] ) ;
finally
Stream.Free;
tmpEmpty.Free; // Dummy Chart löschen
TargetListBox.UpdateSeries;
TargetChart.Refresh;
end;
Sobald man das tempChart (heisst im Beispiel oben tmpEmpty) löscht (Free) verschwindet auch die Serie wieder auf dem TargetChart. Ich habe deshalb bei Steema eine Anfrage gestellt und das Problem ist erkannt - nur eine wirklich passabele Lösung gibt es leider nicht.
Drum meine Frage ... Wäre es nicht möglich
RTTI für eine Kopie zu benutzen? Es ist je bekannt welcher Serien Typ im TempChart vorhanden ist. Diesen Typ erstelle ich in meinem TargetChart mittels Create. Und dann mittels
RTTI alle Eigenschaften kopieren. Wäre das machbar? Hat dafür jemand ein Beispiel (würde ja ein Beispiel mit einer x beliebigen Komponente reichen).
Ich bin mir dann zwar noch nicht sicher ob und wie ich die XY Daten der Serie kopiert bekomme, aber da lässt sich bestimmt was finden. Wichtig wäre nur erstmal eine Kopie anzulegen, welche die gleichen Eigenschaften hat wie im Orginal.