ControlDragging was: Re: [lazarus] CVS Changes
weus at quicknet.nl
Wed Jun 14 16:48:21 EDT 2000
At 13:30 14-06-2000 -0500, Shane Miller wrote:
>Press the NEW FORM button.
>Select the Button component and drop it onto the form.
>Drag the button 2 pixels up. It probably moved a little. Now do it again.
>It doesn't work.
>If you look at the output (look at designerform.pp in mousedown and mouseup
>to see what SHOULD be displayed) you'll see that the TOP and LEFT seem to
>be reported incorrectly.
>If you MOVE the form then try it again it's reported correctly.
>This also occurs when trying to place controls onto the form. Sometimes
>they appear correctly, sometimes not.
>When they dont you can move the form and thn the next one appears
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.
More information about the Lazarus