Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 6 of 6 total
Thread Cursor Issue
Sat, Dec 31 2016 3:36 AMPermanent Link

Uli Becker

When a control's cursor property is <> crAuto, changing
Application.Surface.Cursor doesn't have an effect as long the mouse is
over the control.

Attached a sample project.

Thanks Uli



Attachments: Cursor Test.zip
Mon, Jan 2 2017 6:17 AMPermanent Link

Matthew Jones

Uli Becker wrote:

> When a control's cursor property is <> crAuto, changing Application.Surface.Cursor doesn't have an effect as long the mouse is over the control.

Not sure if I am fully understanding, but surely that's what we would want? The cursor of the surface is the default one, unless it is over a component that has a custom cursor.

Sounds like you are wanting to change the "active" cursor, but that would be changed to a component's cursor on movement anyway, otherwise it would be awkward. Perhaps you need to find a better way to represent a current state?

--

Matthew Jones
Mon, Jan 2 2017 6:55 AMPermanent Link

Uli Becker

Matthew,

> Not sure if I am fully understanding, but surely that's what we would want?

Sure. Assume you want to start an action after a click on a button.
Chaning the "active" cursor to crWait is necessary then.

You can set the control's cursor to crWait, but then only this control
has the crWait cursor. So it's natural to change the "global" cursor to
crWait. And this cursor should overwrite any other control's cursor.

Try the same thing in Delphi, setting Screen.Cursor = crHourglass and
you'll see that this cursor is valid for all controls independent of
their cursor setting. That's the expected behaviour.

Uli
Mon, Jan 2 2017 7:17 AMPermanent Link

Matthew Jones

Uli Becker wrote:

> the same thing in Delphi, setting Screen.Cursor = crHourglass

Indeed, that's why I think we need to clarify what is needed here. You don't want to change the "background" cursor, you want to change the active cursor. A master-override.

What I do is show a "working..." panel or some-such, but that's perhaps a style thing. It really depends whether you want the user to be able to do anything, and changing the cursor won't stop anything being clicked on.

--

Matthew Jones
Wed, Jan 4 2017 2:46 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Uli,

<< Sure. Assume you want to start an action after a click on a button. Chaning the "active" cursor to crWait is necessary then.

You can set the control's cursor to crWait, but then only this control has the crWait cursor. So it's natural to change the "global" cursor to crWait. And this cursor should overwrite any other control's cursor. >>

"Should" is a strong word, here.  Within the constraints of the browser environment, which pegs the cursor property to each UI element (there is no global, singleton cursor for the browser), the best that EWB can do is what it does.  In order to have a parent cursor setting affect a child control/element's cursor display, the child must have its cursor setting set to crAuto.  Otherwise, EWB assumes that you're specifically setting the cursor for a reason, and leaves it alone.

If I were to change this to reflect what you're requesting, it would be impossible for a child control to have a different cursor from a parent control, when both are specifically set to something other than crAuto.

Tim Young
Elevate Software
www.elevatesoft.com
Wed, Jan 4 2017 3:30 PMPermanent Link

Uli Becker

Tim,

> If I were to change this to reflect what you're requesting, it would be impossible for a child control to have a different cursor from a parent control, when both are specifically set to something other than crAuto.

Ok, understood and accepted. Smile

Thanks Uli
Image