AGB  ·  Datenschutz  ·  Impressum  







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

Chart Serie zur Laufzeit erstellen

Ein Thema von renekr · begonnen am 3. Jun 2006 · letzter Beitrag vom 6. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#1

Chart Serie zur Laufzeit erstellen

  Alt 3. Jun 2006, 12:22
Hallo,
Kann mir jemand weiterhelfen.
Ich habe einen Chart udn will bei Doppelclick auf ihn eine neue Form aufmachen mit dem cahrt drin.
Allerdings hat der cahrt schon 2 Series mit Linien.
diese lösche ich zuvor und will 1 neue PIE Serie Erstellen.

Wie kann ich bei TChart eine Torten Serie oder Balken Diagramm zur Laufzeit erstellen?

Danke.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Chart Serie zur Laufzeit erstellen

  Alt 3. Jun 2006, 12:55
Hallo René,

das geht so:

Delphi-Quellcode:
var
  ps: TPieSeries;
begin
  ps := TPieSeries.Create(self);
  with ps do
  begin
    Name := 'PieSeries';
    ParentChart := Chart;
    // ... Daten hinzufügen hier oder später
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Chart Serie zur Laufzeit erstellen

  Alt 3. Jun 2006, 13:15
Hi Marabu.

Es ist immer wieder eine Freude Tips von dir zu bekommen.

Gibt es eigentlich ne möglichkeit,das ich zb. alle Eigenschaften von einem Cahrt auf Form1 zu Chart 1 auf Form 2 zb. übernehmen ohne alle manuell zu setzen.

Kannst du mir noch sagen wie ich die "ExplodeBiggest = 30" Eigenschaft setzen kann?
Find die einfach nicht.
Vielen Vielen Dank.



PS: Meinst du kansnt mir bei diesem Phänomen auch helfen?

Caption Probleme

danke.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Chart Serie zur Laufzeit erstellen

  Alt 3. Jun 2006, 14:41
Hi,
also hab es mal getestet und noch einige Fragen:

Ich habe ja mit TBARSerie eine neue Serie Created. ( oder PIE )
Wenn ich nun den Chart per doppelclick auf eine neue Form wo ich vorher die Serie createt habe nochmas aufmache kommt nen Fehler das die Serie BarChart schon existiert.
Was auch logisch ist.
Die Form57 bleibt auch auf,also ich habs so gedacht das ich auf mehrere charts doppelclicke und die Form 57 geht dann auf mit dem cahrt wo geclickt wurde.
Damit man die chart nebeneinander vergleichen oder größer ansehen kann.


Hier mal mein Source:
Delphi-Quellcode:
var
ps: TBarSeries;
begin
form57 := tform57.Create(self);
form57.AdvToolBarPager1.caption.caption:='Chart # '+chart8.Title.text.text+' #';

  ps := TBarSeries.Create(self);
  with ps do
  begin
    Name := 'BarSeries';
    ColorEachPoint := True;
    Marks.Style := smsValue ;
    ParentChart := form57.Chart1;
  end;


for i:= 0 to chart8.SeriesCount -1 do
begin
Form57.Chart1.Series[i].SeriesColor := Chart8.Series[i].SeriesColor;
Form57.chart1.Series[i].Clear;
Form57.chart1.Series[i].ShowInLegend:=false;
Form57.chart1.Series[i].Title:=chart8.Series[i].title;


    for j:= 0 to chart8.Series[i].Count -1 do
    begin
    Form57.chart1.Series[i].Add(chart8.Series[i].YValue[j],chart8.Series[i].XLabel[j], chart8.Series[i].SeriesColor);
    end;

end;

form57.show;
end;
Die Eigenschaft ColorEachPoint nimet der chart auch nicht an.
Diese macht ja das alle Balken in verschiedenen Farben angezeigt werden.

Wie kann ich den die Eigenschaft besser setzen?
ZB: Will ich auch die Bar Style in der Laufzeit ändern .

Danke
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Chart Serie zur Laufzeit erstellen

  Alt 3. Jun 2006, 20:36
Hi René,

Zitat von renekr:
Es ist immer wieder eine Freude Tips von dir zu bekommen.
vielen Dank für die Blumen.

Zitat von renekr:
Gibt es eigentlich ne möglichkeit,das ich zb. alle Eigenschaften von einem Cahrt auf Form1 zu Chart 1 auf Form 2 zb. übernehmen ohne alle manuell zu setzen.
Eigenschaften von Chart1 auf Chart2 übertragen geht so:

Chart2.Assign(Chart1);
Zitat von renekr:
Kannst du mir noch sagen wie ich die "ExplodeBiggest = 30" Eigenschaft setzen kann?
Das ist eine Eigenschaft von TPieSeries:

Delphi-Quellcode:
procedure TDemoForm.AddButtonClick(Sender: TObject);
var
  ps: TPieSeries;
begin
{
  while Chart1.SeriesCount > 0 do
    Chart1.Series[0].Free;
}

  ps := TPieSeries.Create(self);
  with ps do
  begin
    ps.ParentChart := Chart1;
    ps.AddPie(50 + Random(10), Chr(Ord('A') + ps.Count), clRed);
    ps.AddPie(50 + Random(10), Chr(Ord('A') + ps.Count), clBlue);
    ps.AddPie(50 + Random(10), Chr(Ord('A') + ps.Count), clGreen);
    ps.ExplodeBiggest := 30;
  end;
end;
Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Chart Serie zur Laufzeit erstellen

  Alt 3. Jun 2006, 23:14
Hi,
Nochmals Danke.

Habe soweit alles implementiert.

Kann es sein das die Assign Eigenschaft nicht alles übernimmt?
Also Speziell die Eigenschaften der erstellten Serie ?

Wenn ich zb eine PIE oder Bar Serie create werden die Markierungen nicht übernommen,also was über dem Balken oder Pie angezeigt wird.
die Legend Farben vom Shadow auch nicht zb.

Haste darauf eine Idee ?


Das Problem mit der Serie habe ich immer noch.

Wenn ich eine LineSerie mit 2 Serien habe und ich 2 erstelle sagt er mir das die Serie schon existiert,genauso wenn ich die Bar Serie im neuen form öffne und danach nochmal einen anderen Chart per doppelclick mit der Form nochmals öffnen will.
Kann ich die "ps := TPieSeries.Create(self); " 2 mal aufrufen oder muss ich dann dazwischen ein Free machen,oder eine 2.var einbinden.

Das mit dem Style der Bar Serie klappt einfach nicht.
Wenn ich chart1.series[0].barstyl die propertie gibts nicht wenn ich es zur Laufzeit ändern will.
Glaub ich dreh mich grad im Kreis.

Danke und Gute Nacht.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Chart Serie zur Laufzeit erstellen

  Alt 3. Jun 2006, 23:18
Assign() übernimmt nur die eigentlichen Eigenschaften des Chart - die Serien müssen geklont werden und können dann wiederum mit Assign() übernommen werden. Morgen mehr - wenn nötig.

Gute Nacht.

marabu
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Chart Serie zur Laufzeit erstellen

  Alt 3. Jun 2006, 23:26
Hi,
Ok vielen Dank.
Wäre nicht schlecht wenn mir morgen noch einige tips geben könntest,auch zu dem Caption Problem?

gute Nacht.
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Chart Serie zur Laufzeit erstellen

  Alt 4. Jun 2006, 14:02
Hi Marabu,

also ich habe es nun so gelöst ohne eine Serie zu createn.
Delphi-Quellcode:

var
i:integer;
newSeries : TChartSeries;
begin
form57 := tform57.Create(self);
form57.Chart1.AutoRepaint := False;

WITH form57.Chart1 DO BEGIN
FreeAllSeries;
Assign(Chart5);
END;

 while form57.Chart1.SeriesCount > 0 do
    form57.Chart1.Series[0].Free;

form57.Chart1.assign(chart5);

FOR I := 0 TO Chart5.SeriesCount - 1 DO
BEGIN
newSeries := CloneChartSeries(Chart5[I]);
newSeries .ParentChart := form57.Chart1;
form57.Chart1.AddSeries(newSeries );
END;

form57.Chart1.AutoRepaint := True;
form57.Chart1.Repaint;
Vorteil ich muss den Chart nicht per For Schleife durchlaufen wegen den Werten.

PS: Habe noch 2 Unklarheiten.

Wie kann ich bei dem Chart mit Bar Serie die Barstyle zur Laufzeit ändern?
Oder auch beim Clonechart.
Also wenn ich Form1 chart1 eine Bar Serie auf den Cahrt Form57.chart1 Clone und dann die geclonte Serie zb. den Barstyle ändern will,

Ich clone 3 serien, Bar Pie,Line. alle in die Selbe form die auch dazwischen geöffnet bleiben.

PS: Man kann ja den Chart Savetofile und Laodfromfile machen als *.tee.
Geht das nur mit der Full Version?
Danke
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Chart Serie zur Laufzeit erstellen

  Alt 5. Jun 2006, 11:38
Hi René,

alles ist richtig so wie du es machst. Hier dein Code, nur etwas aufgeräumter:

Delphi-Quellcode:
begin
  with Form57 do
  begin
    with Chart1 do
    begin
      AutoRepaint := False;
      FreeAllSeries;
      Assign(Chart5);
      for i := 0 to Pred(Chart5.SeriesCount) do
        AddSeries(CloneChartSeries(Chart5[i]));
      AutoRepaint := True;
    end;
    Show;
  end;
end;
Den BarStyle kannst du umstellen, sobald du dir einen Zeiger auf die BarSeries besorgt hast. Nehmen wir an es handele sich um die erste Serie im Chart, dann geht das z.B. so:

Delphi-Quellcode:
with Chart1[0] as TBarSeries do
  BarStyle := Succ(BarStyle);
Die Export-Funktionalität von TeeChart ist kein Bestandteil von TChart.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:57 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