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/)
-   -   TChart nur einen Mark zeigen und nicht alle (https://www.delphipraxis.net/202147-tchart-nur-einen-mark-zeigen-und-nicht-alle.html)

DieDolly 2. Okt 2019 18:48


TChart nur einen Mark zeigen und nicht alle
 
Kann mir jemand helfen und mir sagen, wie man bei einem, TChart nur den Mark anzeigen lassen kann auf dessen Punkt sich die Maus gerade befindet?
Bisher kann ich nur alle oder keinen anzeigen lassen

Delphi-Quellcode:
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 Chart1.Series[0].Marks.Visible := True;
end;
Mit
Delphi-Quellcode:
Chart1.Series[0].GetCursorValueIndex
komme ich zwar an den Index des Punktes auf dem ich gerade bin aber wie gehts weiter?

Wenn ich mich nicht blöd anstelle klappt das jetzt so.
Delphi-Quellcode:
Form Create
Chart1.Series[0].Marks.Visible := True;
Delphi-Quellcode:
Alle Marks verstecken
procedure TForm1.HideAllMarks;
var
 i: Integer;
begin
 for i := 0 to Chart1.Series[0].Count - 1 do
  begin
   Chart1.Series[0].Marks.Items[i].Visible := False;
  end;
 Chart1.Series[0].Repaint;
end;
Delphi-Quellcode:
Den Mark anzeigen den ich brauche
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
 i: Integer;
begin
 CurrentMark := Chart1.Series[0].GetCursorValueIndex;

 for i := 0 to Chart1.Series[0].Count - 1 do
  begin
   Chart1.Series[0].Marks.Items[i].Visible := i = CurrentMark;
  end;
end;
So richtig klappt das aber noch nicht dennich muss ganz genau auf der Spitze einer Linie sein, damit dieses Mark auch angezeigt wird.
Bei Punkten auf Linien die zu nah beieinander stehen wird gar nix angezeigt.

Rollo62 4. Okt 2019 12:44

AW: TChart nur einen Mark zeigen und nicht alle
 
Es ist nicht ganz klar was genau Du möchtest.
Ich verstehe es mal so das Du eine Kurve im Chart hast, und davon einen Punkt markiren möchtest.
Das ist wohl nur möglich wenn Du exakt auf einem Index klickst.

Alternativ könntest Du auch einfach eine neue Punktserie anlegen, und darin dann einen freien Punkt eintragen, der diese MArke hat.
Damit solltest Du auch Punkte ausserhalt deiner Kurve anzeigen können (falls gewünscht).

Der schöne Günther 4. Okt 2019 15:13

AW: TChart nur einen Mark zeigen und nicht alle
 
Es gibt unter Tools ein TNearestTool, der kann einem sagen an welchem Punkt einer Series man am nächsten dran ist.

Beispiel:
https://imgur.com/a/1GhPFPv

PS: Hier noch einmal mit Marks die nur dann eingeblendet werden wenn der Mauszeiger nah dran ist:
https://imgur.com/a/RVGp5C8

DieDolly 4. Okt 2019 16:05

AW: TChart nur einen Mark zeigen und nicht alle
 
Zitat:

Es gibt unter Tools ein TNearestTool, der kann einem sagen an welchem Punkt einer Series man am nächsten dran ist.
Nur in der Pro-Version.


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