Jump to content
AlanScottAgain

display hint

Recommended Posts

Hi

I have a gauge that draw I on a Skia paintbox.

I can move the gauge with the mouse. 0-100

 

SkPaintBox1.Hint:= IntToStr(Position);
 SkPaintBox1.ShowHint:= True;

 

Shows the hint but not as the mouse moves.


How can I show a hint to display the current value as the mouse moves to update the gauge?

 

Do I need to create my own hint window?

 

Thanks

Alan

 

Share this post


Link to post
9 hours ago, AlanScottAgain said:

Hi

I have a gauge that draw I on a Skia paintbox.

I can move the gauge with the mouse. 0-100

 

SkPaintBox1.Hint:= IntToStr(Position);
 SkPaintBox1.ShowHint:= True;

 

Shows the hint but not as the mouse moves.


How can I show a hint to display the current value as the mouse moves to update the gauge?

 

Do I need to create my own hint window?

 

Thanks

Alan

 

The hint system is designed to show a hint for a certain time when the mouse enters a control's real estate. In your case the mouse stays over the paintbox, so the hint is not shown again even if its value changed. Try to call Application.CancelHint after changing the value. And if you draw the gauge anyway, why not draw the value as well instead of using a hint window?

Share this post


Link to post
10 hours ago, AlanScottAgain said:

How can I show a hint to display the current value as the mouse moves to update the gauge?

You can either subclass the Gauge control to handle the CM_HINTSHOW message, or you can use the TApplication.OnShowHint/TApplicationEvents.OnShowHint event, to get access to a (pointer to a) THintInfo record, which has HintControl, HintStr, CursorPos, and CursorRect members (amongst other things).

 

As the mouse moves around your UI, the THintInfo members will update accordingly.  When the mouse moves from one control to another, the active hint gets reset.  When the mouse stays inside of a given control and the CursorPos moves outside of the CursorRect, the active hint gets updated.  This allows a control to sub-divide itself so it can have separate hints for different areas.

 

So, if you want the hint to be updated with new text on every mouse move while the mouse is inside of the Gauge control, then whenever the THintInfo's HintControl is pointing at the Gauge control, you can simply set the THintInfo's CursorRect to a 1x1 pixel square at the current CursorPos coordinates, and set the HintStr to the desired text.  This way, the next mouse move will go outside of the CursorRect and update the active hint with the new HintStr text.

Quote

Do I need to create my own hint window?

No, you do not.

Edited by Remy Lebeau

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×