Delphi-PRAXiS
Seite 2 von 2     12   

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 werte anzeigen (https://www.delphipraxis.net/53563-tchart-werte-anzeigen.html)

BrunoT 19. Sep 2005 12:34

Re: TChart werte anzeigen
 
@marabu,

das mit dem ersten Wert war mein Fehler:
Delphi-Quellcode:
  If Chart1.Series[i].GetCursorValueIndex >=0 Then
natürlich fängt ja der Index mit 0 an. :oops: :oops: :oops: (ein Fehlerder mir immer wieder passiert, und schon Stunden der Fehlersuche gekostet hat.)
Das mit der Aktualisierung trifft zu. Ich habe, um die Wartezeit zu verkürzen, geklickt und damit warscheinlich ein refresh ausgelöst, lass also den Besen da wo er ist.

@renekr

[da war ein roter Kasten von marabu->] :mrgreen:
mit marks geht das leider daneben habe ich auch bemerkt, nimm lieber die YValues:
Delphi-Quellcode:
Hint:=Chart1.Series[i].YValueToText(Chart1.Series[i].YValues[Chart1.Series[i].GetCursorValueIndex]);

Mfg
BrunoT

renekr 19. Sep 2005 20:39

Re: TChart werte anzeigen
 
WOW:
Ihr 2 seit die größten.
Very Big Thanks von mir.
Ich hoff ich kann euch auch mal so schnell und Kompetent helfen.
Ich habe seit Samstag das Komplette Internet durchsucht und mich wund gegoogelt ohne Erfolg.

Also nochmal Danke von meiner Seite.

Werd jetzt noch ein bisschen dran feilen,damit ich im hint die Y Value angezeigt bekomt,den Serien namen,und den X Name dazu,dann ist es 1000 % perfect.

renekr 2. Okt 2005 14:34

Re: TChart werte anzeigen
 
Hi,
ich hoffe ihr 2 könnt mir nochmals kurz hekfen:

Habe folgenden Hint gebastelt:

HintStr :=cs.ValueMarkText[index]+' -- '+cs.YValueToText(cs.YValues[index])+' % -- Gruppe :'+cs.Title;

Ich habe 3 Series:

Serie 0 zeigt folgenden Hint an:
2005 KW :19 -- 96 % -- Gruppe : Mittelwert von Basis

Serie 1 zeigt folgenden Hint an:
96 -- 96 % -- Gruppe : Mittelwert von Sound

Serie 2 zeigt folgenden Hint an:
2005 KW :19 -- 96 % -- Gruppe : Mittelwert alle Gruppen


Warum zeigt der Hint beim 2 .Chart als cs.ValueMarkText[index] den Wert in der Y achse an? und nicht wie bei den 2 andeen Serien die Beschriftung der X Achse.
Was ist da falsch?
Füllen tue ich den Chart bei allen Gleich. 100 %ig.

Danke.

marabu 2. Okt 2005 15:23

Re: TChart werte anzeigen
 
Hallo René,

hast du Code, mit dem ich dein Problem auf meiner Maschine nachstellen kann? Am liebsten ein kleines Stück, welches nur das Problem zeigt - nicht gleich dein ganzes Projekt...

Ansonsten denke ich, dass du vielleicht den Markertext bei allen Punkten initialisiert hast, nur bei Serie 1 nicht - deshalb erhältst du dort 96 als Defaultwert.

Grüße vom marabu

renekr 2. Okt 2005 18:38

Re: TChart werte anzeigen
 
Hi,
also wie gesagt ich habe folgendes:
ONCREATE:
Application.OnShowHint := AppShowHint;

procedure TForm1.AppShowHint(var HintStr: string; var CanShow: boolean;
var HintInfo: THintInfo);
var
part: TChartClickedPart;
index: integer;
c: TChart;
cs: TChartSeries;
begin
if (hintinfo.HintControl is TChart) then
begin
c := TChart(HintInfo.HintControl);
c.CalcClickedPart(HintInfo.CursorPos, part);
if Assigned(part.ASeries) then begin
cs := part.ASeries;
index := cs.GetCursorValueIndex;
if index >= 0 then
HintStr :=cs.ValueMarkText[index]+' -- '+cs.YValueToText(cs.YValues[index])+' % -- Gruppe :'+cs.Title;
HintInfo.ReshowTimeout := 50;
end;
end;
end;

chart befülle:

chart2.Series[2].Add(StrToInt(KW_Leistung_2005_MW[i]),IntToStr(2005)+' KW :'+IntToStr(i), clYellow);

Der Hint muß so aussehn:
2005 KW :19 -- 96 % -- Gruppe : Mittelwert von Basis
wenn er falsch ist sieht er so aus:
96 -- 96 % -- Gruppe : Mittelwert von Sound

96 steht für den Wert in der Y Achse wo ich drauf bin,der variert auch ds geht,aber er sollte eigentlich die X Beschriftung anzeigen und nicht den Y Wert.


// Die Charts befülle ich immer so in einer For 1:= do.. schleife

Ich habe 2 Charts beide glecih,
Function zum befüllen des Charts ist Identisch und denoch ist bei Chart 1 Serie 2 der Hint falsch:
Im chart2 Serie2 ist er korrekt,obwohl die selbe Funktion zum befüllen dahinter steckt.

wie kann das sein.
Komisch ist das bei Chart 2 alles ok ist?!?!?!

marabu 2. Okt 2005 19:34

Re: TChart werte anzeigen
 
Laut Dokumentation übergibst du einen XLabel als zweiten Parameter der Methode Add() beim Befüllen deiner ChartSeries. Wenn du auf diesen Wert im Ereignis OnShowHint zugreifen willst, dann so:

Delphi-Quellcode:
...
HintStr := cs.XLabel[index] + ' -- ' + cs.YValueToText(cs.YValues[index])
  + ' % -- Gruppe :' + cs.Title;
...
Du kannst die cs.XLabel aber auch getrennt setzen. Eine letzte Möglichkeit zur Bestimmung von MarkText ist das Ereignis ChartSeries.OnGetMarkText - bei dieser Methode kann der Anzeigetext erzeugt werden, wenn er gebraucht wird - just in time.
Du musst prüfen, ob du an irgendeiner Stelle deine vermeintlich korrekt gesetzten Anzeigetexte überschreibst, indem du eine dieser Alternativen verwendest.

marabu

PS: Im Regelfall gilt natürlich XLabel[i] = ValueMarkText[i], aber der Zugriff über XLabel ist bei deiner Art des Befüllens semantisch sauberer.

renekr 2. Okt 2005 20:39

Re: TChart werte anzeigen
 
Hi,
man du bist der größte,ich habe mit Charts erst vor ner Woche angefangen und dank dir alles hinbekommen was ich wollte.

Das mit XLabel ging perfekt.
Mich wundert es nur, das es in 1.chart nciht ging und im 2 Chart geht.

Naja mit dem XLabel geht alles und ist besser.

Danke.

renekr 21. Jun 2007 09:17

Re: TChart werte anzeigen
 
Hi marabu,
Ich hoffe du kannst mir nochmal kurz helfen?

Ich habe ja das Appshowhint in dem Oncreate drin.
Damit mache ich die Hints beim TChart damit ich die Werte angezeigt bekomme.

Nun will oder muss ich von TMSSoftware das advstringgrid verwenden das auch einen OfficeHint hat.
Der sieht anderst aus und man kann noch nette sachen damit machen und darstellen lassen.

Mein Problem :
Folgende Konstellation:

Delphi-Quellcode:
OnCreate: Application.OnShowHint:=AppShowHint;
Das hat dann zur Auswirkung das der Office hint für das Advstringgrid nicht geht.
Wenn ich das weg mache dann geht er wieder aber dafür mein TChart Hint logischeerweise nicht mehr.

Ich würde aber gerne alles habn also das beim TChart die AppShowHint function wirkt und beim advstringgrid der normale OfficeHint von TMS Software.


Siehst du da eine möglichkeit das hinzubekommen?

Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr.
Seite 2 von 2     12   

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