Autor Beitrag
chriG_L
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 31.01.07 17:57 
Hallo

Ich zeige Messwerte in einem Diagramm an.
Diese werden ständig akktualisiert und
im diagramm angezeigt. Die X Achse ist
max 10 Einheiten lang.
Ich will das dieser Bereich von 10 Werten bleibt,
und somit immer mitwandert...
Habs versucht den maxXValue immer zuerweiteren...
funktioniert aber nicht! Kann mir jemand helfen?!
gruss christian

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
series1.Add(diagrammwert,inttostr(zaeler*30)+'mS',clTeeColor);
max:=max+1;
if(max=10)then
   begin
   series1.MaxXValue:=series1.MaxXValue+1;
   series1.MinXValue:=series1.MinXValue+1;
   end;


Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mi 31.01.07 18:42 
Funtzt es nicht, wie du es willst, oder gibt es einen Error?
Was hast du für ein Diagramm (Art des Diagramms)?
Nun zum Fehler:
a) Wenn es einen Error gibt, dann könnte es womöglich daran liegen, dass die Erwartung für den zweiten Parameter auf Float fällt. Ich bin mir von daher nicht sicher, weil ich immer ->Series1.AddXY (x-Float,y-Float,Beschriftung-String,Farbe-Color (clTeeColor)<- benutze.
b) Wenn es nicht funktioniert, dann könntest du folgendes tun.
Du setzt den Startwert am Anfang auf 1, dafür musst du eine Variable nehmen.
Wenn die neue Wert (also der Messwert, bevor er angezeigt wird) größer als die Variable ist, dann setzt du die Variable auf den Wert, der gemessen wurde.
Du zeigst dann immer das "Level" der Variable an.

Wenn das nicht funktionieren sollte, oder ich dein Problem nicht verstanden habe, müsstest du mir es mal genauer schildern.

Ich hoffe, geholfen zu haben.

PS: Gib sonst bitte die Diagramart an!!!
Andreas Schilling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128
Erhaltene Danke: 1

WIN XP, WIN 7
Delphi 5 Ent, Delphi 2007 Pro, XE4
BeitragVerfasst: Do 01.02.07 07:21 
Das ist für die Variante, das alles nach links aus dem Chart verschoben wird (kann man dann noch eine Scrollfunktion programmieren um die unsichtbaren Werte wieder anzuzeigen), aber nur 10 Werte anzeigt. Hat den Nachteil, das der Speicherverbrauch ständig steigt. Um ein Seriesafteradd Ereignis zu erzeugen, ist die Serie "oben" im Objektinspektor auszuwählen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TAuswerten_F.Series1AfterAdd(Sender: TChartSeries;
  ValueIndex: Integer);
begin
  Sender.GetHorizAxis.Automatic := False;        { <-- we dont want automatic scaling }

  Sender.GetHorizAxis.Maximum := Sender.GetHorizAxis.Maximum + 1;
  if Sender.GetHorizAxis.Maximum > 10
  then Sender.GetHorizAxis.Minimum := Sender.GetHorizAxis.Maximum - 10;
end;
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Fr 02.02.07 15:59 
Irgendwie glaue ich, chriG_L interessiert sich garnicht für die Antworten.
Jedenfalls ist es bei mir so üblich, dass man "danke" sagt, wenn man zufrieden ist bzw. das Problem noch mal erklärt, wenn man nicht zufrieden ist!!! :evil: :!:
chriG_L Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 23.02.07 12:54 
Danke für eure Hilfe!
Klapt bestens mit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if(max>10)then
  begin
  chart1.BottomAxis.Maximum:=max-1;
  chart1.BottomAxis.Minimum:=max-10;
end;


gruss


Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt