Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TAdvChart Probleme (https://www.delphipraxis.net/160592-tadvchart-probleme.html)

zeras 21. Mai 2011 12:30

TAdvChart Probleme
 
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.

michaxx 21. Mai 2011 13:24

AW: TAdvChart Probleme
 
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

zeras 21. Mai 2011 16:02

AW: TAdvChart Probleme
 
Zitat:

Zitat von michaxx (Beitrag 1102100)

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;

Zitat:

Zitat von michaxx (Beitrag 1102100)

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

Mal sehen, ob sie die Demos anpassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 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