[Gambas-user] Mouse X & Y reporting...

Bruce Steers bsteers4 at gmail.com
Sun Nov 12 19:30:56 CET 2023


aah yes.
It has a CursorAt(Pos As Integer) As Point but that's the wrong way round
there is no CursorFrom(X As Integer, Y As Integer) As Integer or equivalent.

So we could do this..
(there is possibly an easier or built in way)

Public Sub TextArea1_Drop()

  ' get line number and line text from Drag.Y
  Dim iPos As Integer = TextArea1.ToPos(Drag.Y \ TextArea1.Font.Height, 0)
  Dim iLine As Integer = TextArea1.ToLine(iPos)
  Dim sTxt As String = Split(TextArea1.Text, "\n")[iLine]

  ' add chars of the text to a string and measure it until
  ' it is further than Drag.X
  Dim sTo As String
  Dim i, X, iLast As Integer
  Repeat
    Inc i
    sTo = Mid(sTxt, 1, i)
    X = TextArea1.Font.TextWidth(sTo)
    If X > Drag.X Then Break
    iLast = sTo.Len - 1
  Until i > sTxt.Len

  ' Set the TextArea1 cursor to line And column Pos and insert drag text
  TextArea1.Pos = TextArea1.ToPos(iLine, iLast)
  TextArea1.Insert(Drag.Paste())

End

That's only simple code and may need some more error handling but should
get you started :)

BruceS


On Sun, 12 Nov 2023 at 17:02, vuott-

-- via User <user at lists.gambas-basic.org> wrote:

> I do not believe that he can position the text in the TextArea, "directly"
> according to the ".X" and ".Y" Properties, or ".ScreenX" and ".ScreenY" of
> the Mouse Class.
>
>
>
>
> 12 nov 2023, 16:42 da bsteers4 at gmail.com:
>
>
>
> On Sun, 12 Nov 2023 at 15:04, sbungay <sbungay at smartsonsite.com> wrote:
>
>    I've been struggling with dragging data from a TreeView to a Text
> Area, and I THINK I've found the source of the frustration.
>
>    Both the TreeView and TextArea have Tracking enabled. So everything
> is OK there.
>
>    The Drag begins and the Mouse.X and Mouse.Y coordinates are given
> relative to where it was in the TreeView when that event fires. Lets say
> the values are, respectively, 21 and 88. Dragging the text from the
> TreeView to the position in the TextArea where it needs to be inserted
> it ALWAYS inserts it in the wrong spot, and the Mouse.X and Mouse.Y
> remain set at 21 and 88, which explains why insertion did not take place
> at the desired location.
>
>   Shouldn't the Mouse.X and Mouse.Y be updated to the coordinates of the
> pointer relative to the control over which the drop occurred?
>
> --
> Steve.
>
>
> No because Mouse.X and Mouse.Y are object relative positions.so belong to
> the calling objects Drag event
>
>
> See Drag.X and Drag.Y
>
> Or use Mouse.ScreenX , Mouse.ScreenY with the dropped objects screen
> positions.
>
> Dim iDropRelativeMouseX = Mouse.ScreenX - MyDroppedControl.ScreenX
> Dim iDropRelativeMouseY = Mouse.ScreenY - MyDroppedControl.ScreenY
>
> BruceS
>
>
>
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20231112/81294cda/attachment.htm>


More information about the User mailing list