Recent

Author Topic: [SOLVED] THintWindow and TAChart  (Read 3525 times)

apeoperaio

  • Sr. Member
  • ****
  • Posts: 272
[SOLVED] THintWindow and TAChart
« on: June 08, 2021, 04:14:18 pm »
I am using a THintWindow to show a proper hint when moving on a point over a TAChart.
In order to show the hint I am using the OnHintPosition event of the TDataPointHintTool and it works properly.
But, what should I use to hide the hint? I would like to hide the hint as soon as the mouse is no more over a point (like the text hint provided by TAChart).
How can I do that? Any hint?
Thank you.
« Last Edit: June 09, 2021, 03:55:12 pm by apeoperaio »

arneolav

  • Full Member
  • ***
  • Posts: 195
    • ElTranslador
Re: THintWindow and TAChart
« Reply #1 on: June 08, 2021, 05:28:11 pm »
Hi!
I'm using event "OnHint" and do not have this problem.
Add series like this:
ASeries.AddXY(myDateTime, MyValue, MyHintText, myColor);
In OnHint:
AHint:= TLineSeries(ATool.Series).Source.Item[ATool.PointIndex]^.Text;
« Last Edit: June 08, 2021, 05:52:47 pm by arneolav »
Win XP, Win7, Win 10, Win 11, win64 , Lazarus 3.0RC1
Delphi/DevExpress

apeoperaio

  • Sr. Member
  • ****
  • Posts: 272
Re: THintWindow and TAChart
« Reply #2 on: June 08, 2021, 05:31:55 pm »
Do you use THintWindow or simple text hints?

wp

  • Hero Member
  • *****
  • Posts: 11853
Re: THintWindow and TAChart
« Reply #3 on: June 08, 2021, 06:20:39 pm »
Since I don't know what you are doing exactly I cannot give specific help. However, maybe it helps when you study the attached demo in which the hint immediately disappears when the mouse is moved away from the data point.

apeoperaio

  • Sr. Member
  • ****
  • Posts: 272
Re: THintWindow and TAChart
« Reply #4 on: June 09, 2021, 03:03:25 pm »
Your example works properly with hint provided by TAChart.
I would like to use a THintWindow instead (https://lazarus-ccr.sourceforge.io/docs/lcl/forms/thintwindow.html) since I would like to paint other controls on the hint, not only a text.
I attached a modified version of your project using THintWindow, it is showed in OnHintPosition event of TDataPointHintTool

You will see that the hint is shown when the mouse is over a point but it remains there when the mouse move away from the point.


wp

  • Hero Member
  • *****
  • Posts: 11853
Re: THintWindow and TAChart
« Reply #5 on: June 09, 2021, 03:46:39 pm »
You can catch the OnAfterMouseMove event and check whether the Series property of the DatapointHintTool is nil. When this is true, the mouse is no longer over a datapoint, and you can destroy your HintWindow:

Code: Pascal  [Select][+][-]
  1. procedure TForm1.ChartToolset1DataPointHintTool1AfterMouseMove(
  2.   ATool: TChartTool; APoint: TPoint);
  3. begin
  4.   if TDatapointHintTool(ATool).Series = nil then
  5.     FreeAndNil(_hint);
  6. end;

apeoperaio

  • Sr. Member
  • ****
  • Posts: 272
Re: [SOLVED] THintWindow and TAChart
« Reply #6 on: June 09, 2021, 03:55:35 pm »
It works as expected.
Thank you!

 

TinyPortal © 2005-2018