AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TAdvChart Probleme

Ein Thema von zeras · begonnen am 21. Mai 2011 · letzter Beitrag vom 21. Mai 2011
Antwort Antwort
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.524 Beiträge
 
Delphi 11 Alexandria
 
#1

TAdvChart Probleme

  Alt 21. Mai 2011, 12:30
Hallo,

da ich mit den Teechart Probleme hatte, mehrere Achsen sauber darzustellen, habe ich mich entschlossen, vom TMS die TAdvChart zu kaufen. Leider komme ich da nicht so richtig in Gang, weil es offensichtlich tausende an Einstellungen gibt. TMS hatte ich heute nochmal angeschrieben, dass manche Demos nicht richtig gehen, aber ich wollte am Wochenende noch etwas "vollbringen".

Hat jemand von Euch Erfahrungen mit der Komponente?

Delphi-Quellcode:
var
  i: integer;
  d: TDateTime;
  c: Integer;
begin

 ar[0].time := 0;
 ar[0].v := 100;

 ar[1].time := 4;
 ar[1].v := 200;

 ar[2].time := 8;
 ar[2].v := 300;

 ar[3].time := 12;
 ar[3].v := 400;

 ar[4].time := 16;
 ar[4].v := 500;

 ar[5].time := 20;
 ar[5].v := 600;

 ar[6].time := 24;
 ar[6].v := 700;

 ar[7].time := 28;
 ar[7].v := 800;

 ar[8].time := 32;
 ar[8].v := 900;

 ar[9].time := 36;
 ar[9].v := 1000;

 ar[10].time := 40;
 ar[10].v := 1100;


  with AdvGDIPChartView1.Panes[0] do
  begin
    XAxis.UnitType := utMilliSecond;

    XAxis.Size := 130;
    Title.Text := 'May 2010';
    Title.Size := 50;
    Title.Font.Size := 16;
    Range.StartDate := EncodeTime(0, 0, 0, 0);


    with Series[0] do
    begin
      AutoRange := arEnabled;
      ChartType := ctLine;
      XAxis.MajorUnitTimeFormat := 's,zzz';
      XAxis.TextBottom.Angle := 50;
      XAxis.AutoUnits := true;
      for I := 0 to 10 do
      begin

        AddSingleXYPoint(ar[i].time, ar[i].v);

      end;
    end;
    Range.RangeTo := 20; //das ist Max Wert für X Achse
  end;
Meine Daten liegen in einem Array, wie im Text oben beschrieben.
Als Zeitachse kommt immer ein Wert in ms, welches unterschiedlich sein kann. Oben beispielsweise jeweils 4ms. Dann noch der Wert. Im Chart sieht es dann immer so aus, als wenn immer alle 1ms Werte eingetragen wurden.

OK, sehr speziell, aber vielleicht hat doch der ein oder andere weitere Infos.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
michaxx

Registriert seit: 27. Mai 2007
Ort: Hessen
19 Beiträge
 
Delphi 2009 Professional
 
#2

AW: TAdvChart Probleme

  Alt 21. Mai 2011, 13:24
Hallo,

ich denke, Du hast ja schon einen Tipp von TMS, aber vielleicht als Ergänzung

Wenn es Dir um das Zeichnen der X-Achse und individueller Beschriftung geht, kannst Du Dir eine

procedure anlegen:

procedure XAxisDrawValue(Sender: TObject; Serie: TChartSerie;
Canvas: TCanvas; ARect: TRect; ValueIndex, XMarker: integer; Top: Boolean;
var defaultdraw: Boolean);


und diese dann Deiner Serie zuweisen:
Panes[0].Series[0].OnXAxisDrawValue := frmUmsatz.XAxisDrawValue;

damit ist dann auch ein individuelles Vorgehen möglich.

Und Du hast Recht, diese Demos funktionieren nicht oder nicht mehr.

Viele Grüße
Michael Bickel
Michael
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.524 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TAdvChart Probleme

  Alt 21. Mai 2011, 16:02

Wenn es Dir um das Zeichnen der X-Achse und individueller Beschriftung geht, kannst Du Dir eine

procedure anlegen:
Danks für die Info. Wenn ich mit Bordmitteln nicht weiterkomme, werde ich mit deiner Hilfe weitermachen.
Ich bin schon ein wenig weiter. In einer Testumgebung geht es nun.

Delphi-Quellcode:
 XAxis.UnitType := utMilliSecond;
    XAxis.Size := 130;

    Range.StartDate := trunc(Date);


    with Series[0] do
    begin
      AutoRange := arEnabled;
      ChartType := ctXYLine; //ctXYLine ist wichtig für Datum/Zeitfunktionen
      XAxis.MajorUnitTimeFormat := 's,zzz';
      XAxis.TextBottom.Angle := 50;
      XAxis.MajorUnitSpacing := 20;
      XAxis.XYValuesOffset := 60;
      XAxis.AutoUnits := false;
      d := EncodeDate(2010, 05, 1) + I * 5;

      AddSingleXYPoint(0, 0, Date );

      AddSingleXYPoint(0, 1, Date + EncodeTime(0, 0, 0, 4));

      AddSingleXYPoint(0, 10, Date + EncodeTime(0, 0, 0, 8));

      AddSingleXYPoint(0, 3, Date + EncodeTime(0, 0, 0, 12));


    end;
    Range.RangeTo := 15;
  end;


Und Du hast Recht, diese Demos funktionieren nicht oder nicht mehr.
Mal sehen, ob sie die Demos anpassen.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  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 +1. Es ist jetzt 04:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf