B4J Question MouseMoved for CustomListView

zed

Well-Known Member
Licensed User
There is no property or event named “MouseMovedEvent” to attach directly to the CLV. To capture mouse movement, you must do it at the item panels themselves, by giving them an EventName during initialization, and then writing the corresponding subroutine.

Something like this:
Mouse Moved:
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("MainPage")
 
    CustomListView1.Clear
    CustomListView1.Add(CreateItem("Item 1", 1), 1)
    CustomListView1.Add(CreateItem("Item 2", 2), 2)
    CustomListView1.Add(CreateItem("Item 3", 3), 3)
 
End Sub


Sub CreateItem(Title As String, Value As Object) As B4XView
    Dim p As B4XView = xui.CreatePanel("item") ' EventName = "item"
    p.SetLayoutAnimated(0, 0, 0, CustomListView1.AsView.Width, 50dip)
   
    Dim lbl As Label
    lbl.Initialize("")
    lbl.Text = Title
    lbl.TextSize = 14
    p.AddView(lbl, 10dip, 10dip, p.Width - 20dip, p.Height - 20dip)
    p.Tag = Value
    Return p
End Sub

Sub item_MouseMoved (EventData As MouseEvent)
    Dim p As B4XView = Sender
    p.Color = xui.Color_Magenta
    Log("event = "&EventData.X)

End Sub

Sub item_MouseExited (EventData As MouseEvent)
    Dim p As B4XView = Sender
    p.Color = xui.Color_Cyan
    Log("event = "&EventData.X)

End Sub

Log:
Waiting for debugger to connect...
Program started.
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
event = 0
event = 16
event = 23
event = 27
event = 32
event = 38
event = 41
event = 46
event = 50
event = 54
event = 56
event = 59
event = 60
event = 61
event = 62
event = 63
event = 63
event = 64
event = 65
event = 65
event = 66
event = 67
event = 68
event = 69
event = 70
event = 70
event = 70
event = 72
event = 72
event = 73
event = 73
event = 73
event = 74
event = 75
event = 75
event = 76
event = 76
 
Last edited:
Upvote 1

dstankovic

New Member
Licensed User
Longtime User
There is no property or event named “MouseMovedEvent” to attach directly to the CLV. To capture mouse movement, you must do it at the item panels themselves, by giving them an EventName during initialization, and then writing the corresponding subroutine.

Something like this:
Mouse Moved:
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("MainPage")
 
    CustomListView1.Clear
    CustomListView1.Add(CreateItem("Item 1", 1), 1)
    CustomListView1.Add(CreateItem("Item 2", 2), 2)
    CustomListView1.Add(CreateItem("Item 3", 3), 3)
 
End Sub


Sub CreateItem(Title As String, Value As Object) As B4XView
    Dim p As B4XView = xui.CreatePanel("item") ' EventName = "item"
    p.SetLayoutAnimated(0, 0, 0, CustomListView1.AsView.Width, 50dip)
  
    Dim lbl As Label
    lbl.Initialize("")
    lbl.Text = Title
    lbl.TextSize = 14
    p.AddView(lbl, 10dip, 10dip, p.Width - 20dip, p.Height - 20dip)
    p.Tag = Value
    Return p
End Sub

Sub item_MouseMoved (EventData As MouseEvent)
    Dim p As B4XView = Sender
    p.Color = xui.Color_Magenta
    Log("event = "&EventData.X)

End Sub

Sub item_MouseExited (EventData As MouseEvent)
    Dim p As B4XView = Sender
    p.Color = xui.Color_Cyan
    Log("event = "&EventData.X)

End Sub

Log:
Waiting for debugger to connect...
Program started.
Call B4XPages.GetManager.LogEvents = True to enable logging B4XPages events.
event = 0
event = 16
event = 23
event = 27
event = 32
event = 38
event = 41
event = 46
event = 50
event = 54
event = 56
event = 59
event = 60
event = 61
event = 62
event = 63
event = 63
event = 64
event = 65
event = 65
event = 66
event = 67
event = 68
event = 69
event = 70
event = 70
event = 70
event = 72
event = 72
event = 73
event = 73
event = 73
event = 74
event = 75
event = 75
event = 76
event = 76
Thank you very much!
 
Upvote 0
Top