Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DBChart -> Markierung anzeigen, wenn Maus über Punkt ist (https://www.delphipraxis.net/109395-dbchart-markierung-anzeigen-wenn-maus-ueber-punkt-ist.html)

HolgerCW 4. Mär 2008 21:29

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 ?

marabu 5. Mär 2008 10:16

Re: DBChart -> Markierung anzeigen, wenn Maus über Punkt
 
Hallo Holger,

die entsprechende Eigenschaft heißt Visible:

Delphi-Quellcode:
DemoChart.Series[0].Marks.Visible := False;
Da sie die Sichtbarkeit generell für alle Markierungstexte steuert, wirst du etwas tricksen müssen.

Freundliche Grüße

HolgerCW 5. Mär 2008 11:05

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

marabu 5. Mär 2008 20:09

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?

HolgerCW 6. Mär 2008 13:23

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:
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;
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.

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:35 Uhr.
Seite 2 von 2     12   

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