![]() |
DBChart -> Markierung anzeigen, wenn Maus über Punkt ist
Hallo zusammen,
ich habe ein DBChart, in dem ich mehrere Punkt anzeige. Ist es möglich die Markierung dann anzuzeigen, wenn man mit der Maus über einem Punkt ist ? Dann soll aber nur die Markierung dieses Punktes angezeigt werden ... Gruss Holger |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Hat denn hier niemand einen Hinweis ? :cry:
|
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
welche version hast du denn? hab mal so was in der demo gesehen...
|
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Man könnte beim Mausbewegen Überprüfen, ob sich an dieser Stelle ein Wert der Serie befindet
|
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Hallo,
wenn ich doch nur wüsste, was mit Markierung genau gemeint ist. Der Serientyp scheint ja keine Rolle zu spielen, sonst hätte ihn Holger bestimmt benannt. Freundliche Grüße |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
ICh habe die Serie mit den Punkten ohne 3D. Die Punkte befinden sich natürlich auf irgendwelchen X/Y Koordinaten. Die Beschriftung (Markierung) der Punkte sollte natürlich auch erscheinen wenn man sich ein paar Pixel neben der X/Y Koordinaten befindet, da der Punkt selber ja auch etwas grösser ist.
Und wie kann ich dann nur bei dem Punkt wo die Maus drüber fährt die Beschriftung einblenden ? Gruss Holger |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Mit
Delphi-Quellcode:
und
TChartSeries.XScreenToValue
Delphi-Quellcode:
Kannst du die zu einem Punkt gehörenden Koordinaten ermittlen
TChartSeries.YScreenToValue
|
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
danke ... und wie kann ich die Beschriftung dieses Punktes dann aktivieren oder irgendeine Beschriftung zuweisen ?
Gruss Holger |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Hallo Holger,
ich erinnere mich da an einen Thread, der dich interessieren könnte: ![]() Gute Nacht |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Vielen dank,
das klappt schon halb. Nur arbeiten die dort mit "Hint" Kann ich auch:
Delphi-Quellcode:
... diesen Text ein-/ und ausblenden ? Im Chart kann man Ihn ja sichtbar oder nicht-sichtbar stellen. Wo finde ich diese Eigenschaft ?
TChart.Series[i].ValueMarkText[index]
Gruss Holger |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Hat hier keiner eine Lösung. Was man im Editor des Charts einstellen kann muss man doch auch Code-technisch beeinflussen können ?
|
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Hallo Holger,
die entsprechende Eigenschaft heißt Visible:
Delphi-Quellcode:
Da sie die Sichtbarkeit generell für alle Markierungstexte steuert, wirst du etwas tricksen müssen.
DemoChart.Series[0].Marks.Visible := False;
Freundliche Grüße |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Das ist schon mal fantastisch. Wüsstest Du denn auch wie man jede einzelne Bezeichnung (Mark) einer Serie ein-/ausblenden kann ?
Gruss Holger |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Wenn du die Quellen zur Chart-Komponente verfügbar hast, dann kannst du da sicherlich etwas richten, aber im Auslieferungszustand kann nur die Sichtbarkeit aller Marks gemeinsam geschaltet werden. Mit Trickserei meinte ich, dass du natürlich die Marks komplett leer lassen kannst und erst beim Chart.OnMouseMove() über Series[index].Marks.Clicked() genau den ValueMarkText[] füllst, der als einziger gezeigt werden soll.
Warum willst du die Anzeige denn nicht über die Hint-Technik machen? |
Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
Hi,
danke für die ganzen Hinweise. Ich habe jetzt beides umgesetzt: Um eine Übersicht zu haben, zeige ich alle Punkte mit Markierung an. Die Markierungen kann man dann mit einer CheckBox ausblenden. Zusätzlich erscheint, wenn man die Mouse über den Punkt bewegt die Information im Hint ! Habe das so mit dem Hint gelöst:
Delphi-Quellcode:
Mit der Variante brauchte ich nicht diesen HintRefresh beeinflussen. Der einzige Nachteil ist, das man nachdem der Hint erschienen ist, einmal mit der Maus klicken muss damit der Hint verschwindet und der nächste Hint beim überfliegen mit der Maus angeziegt werden kann. Das Refresh mache ich mit ShowHint = False und wieder True.
procedure TForm1.DBChartMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer); var I: Integer; Index: Integer; begin DBChart.ShowHint := FALSE; DBChart.Hint := ''; DBChart.ShowHint := TRUE; I := 0; For I := 0 To DBChart.SeriesCount - 1 do begin If DBChart.Series[I].GetCursorValueIndex >= 0 Then begin Index := DBChart.Series[I].GetCursorValueIndex; DBChart.Hint := DBChart.Series[I].ValueMarkText[Index]; end; end; end; Vielleicht kann das ja einer noch verfeinern, aber die Lösung gefällt mir schon. Gruss Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz