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 TChart mit Zeitskala (https://www.delphipraxis.net/143614-tchart-mit-zeitskala.html)

DelphiManiac 19. Nov 2009 11:18


TChart mit Zeitskala
 
Hallo,

ich nutze die Komponente TChart und brauche da ein wenig Hilfe:

Ich will Jede Sekunde den Chart mit einem Messwert Füllen (Temperatur zu Zeit)
Y -Achse Temp
X -Achse Zeit

Wenn ich jetzt das im Timer mach sieht das so aus:

Timer.Tag wird alle 1 Sek hochgezählt
Delphi-Quellcode:
 
  lnAkuelleInnenTemp.AddXY(Timer1.Tag,Temps.TempInnen.temp * 0.1);
  lnAktuelleAussenTemp.AddXY(Timer1.Tag,Temps.TempAussen.temp * 0.1);
Nun habe ich aber nach zB. 1000 Sekunden ein Problem, ich will dann nach 60 sek nicht mehr Sekunden sondern Minuten anzeigen und vielleicht nach 60 Minuten die Stunden.
Also ich will meine Skalendarstellung (Beschriftung) anpassen je nach vergangener Zeit.

Könnt ihr mir da einen Tipp geben?

Vielen Dank
Gruß
DelphiManiac

alzaimar 19. Nov 2009 13:26

Re: TChart mit Zeitskala
 
Definiere die X-Achse als Zeit (im Series-Pane) und packe nicht die Sekunden als Integer, sondern 'Sekunden/86400' als X-Wert in die Series rein.

user0815 19. Nov 2009 14:19

Re: TChart mit Zeitskala
 
Muss ja irgendwie so gehen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  i := 0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  j : Integer;
begin
  inc(i);

  case i of
    1..60 : begin
              Chart1.BottomAxis.DateTimeFormat := 'hh:nn:ss';
            end;
    61 :   begin
              for j := 1 to 59 do
               Series1.Delete(0); // ersten 59 Sekunden löschen

              Chart1.BottomAxis.DateTimeFormat := 'hh:nn';
            end;
    else   begin
              if i mod 60 <> 0 // jede Minute 1 Wert stehen lassen
               then Series1.Delete(Series1.XValues.Count -1);
            end;
  end;

  Series1.AddXY(now, Random(100), '', clTeeColor);
end;

DelphiManiac 20. Nov 2009 08:00

Re: TChart mit Zeitskala
 
@alzaimar:

Hey erstmal Danke,

wo genau finde ich denn die Einstellung (Series Pane?)
In der Konfig für den gesamt Graph oder für die einzelnen Series?

Danke

sirius 20. Nov 2009 09:08

Re: TChart mit Zeitskala
 
IMHO in der Series.

Series.XValues.DateTime:=true; oder do ähnlich


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