ControlDragging was: Re: [lazarus] CVS Changes
Robert Scott Horning
roberth at ise-tlx.com
Wed Jun 14 17:09:46 EDT 2000
Marc Weustink wrote:
> Mouse.Cursorpos is given in screen coordinates, not in form coordinates.
> Onmousedown you store Cursorpos (or better, the given X and Y),
> onmouseUp you calc the difference with the new Cursorpos (or better, the
> given X and Y) THe difference is added to the Left and Top.
>
> I committed a solution which normally should work, however it doesn't due
> to a bug in the MouseMove and MouseUp handlers
>
> MouseMove / MouseUp should always give the mouseposition X and Y in the
> Sender coordinates. It does as long as the up event occoured in the
> control itself. However if you are outside the control you get the X and Y
> in Form coordinates.
>
> Marc
Having done quite a bit of Windows programming, especially with the Mouse
Move/Mouse Up events, this is not correct. The coordinates should ALWAYS be in
relation to Sender (even if the X & Y are negative... which is possible even for
Form or even Screen coordinates.) The problem comes when you try to move
something, and as soon as you cross a threshold (like the edge of a control) it
jumps suddenly to a totally different location on the monitor. Having made
mistakes like this in some of my GUI programming has caused hours of grief when
I got the coordinate systems mixed up.
--
Robert Scott Horning
Trans-Lux West
1651 North 1000 West
Logan, Utah 84321
Phone: (435) 716-8696
FAX: (435) 752-8513
E-mail: roberth at ise-tlx.com
More information about the Lazarus
mailing list