Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Objekt kopieren mittels RTTI?

  Alt 13. Mai 2009, 17:36
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.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat