AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Objekt kopieren mittels RTTI?

Ein Thema von moelski · begonnen am 13. Mai 2009 · letzter Beitrag vom 14. Mai 2009
Antwort Antwort
moelski

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

Objekt kopieren mittels RTTI?

  Alt 13. Mai 2009, 18: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
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Objekt kopieren mittels RTTI?

  Alt 14. Mai 2009, 07:57
Du kannst es mal mit unserer RTTIHelper-Library probieren.
Da gibt es eine rttihCloneObject-Funktion.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
moelski

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

Re: Objekt kopieren mittels RTTI?

  Alt 14. Mai 2009, 08:21
Moin !

Danke. Habe inzwischen auch das gefunden:
http://www.blong.com/Conferences/Bor...RTTI/CB140.htm
http://www.blong.com/Conferences/Bor...RTTI/CB140.zip

Überlege nur noch wie ich die Daten einer TChart Serie am einfachsten kopieren kann.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
steffen_d

Registriert seit: 28. Nov 2004
Ort: Leipzig
27 Beiträge
 
#4

Re: Objekt kopieren mittels RTTI?

  Alt 14. Mai 2009, 17:38
Hallo, da fällt mir auf die Schnelle nur ein :

Delphi-Quellcode:
for i := 0 to tmpEmpty.Series[0].Count -1 do
begin
    TargetChart.Series[TargetChart.SeriesCount - 1].AddXY(tmpEmpty.Series[0].XValue[i], tmpEmpty.Series[0].YValue[i], tmpEmpty.Series[0].XLabel[i], tmpEmpty.Series[0].ValueColor[i]);
end;
Gruß
Steffen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 20:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf