Can anyone give me an example of how to add a contextmenu to a Label. It's probably easy but I cannot get it to work.
I have searched the forum but nothing helped.
Thanks Dave.
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private xui As XUI
Private Label1 As Label
Private ctxMenu As ContextMenu
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("Layout1")
MainForm.Show
ctxMenu.Initialize("")
Dim MT() As String = Array As String("MI1","MI2","MI3")
For i = 0 To MT.Length - 1
Dim Mi As MenuItem
Mi.Initialize(MT(i),"ctxm")
ctxMenu.MenuItems.Add(Mi)
Next
End Sub
Private Sub Label1_MouseClicked (E As MouseEvent)
Dim jo As JavaObject = ctxMenu
Dim ScreenX As Double = E.As(JavaObject).RunMethod("getScreenX", Null)
Dim ScreenY As Double = E.As(JavaObject).RunMethod("getScreenY", Null)
jo.RunMethod("show",Array(Label1,ScreenX,ScreenY))
End Sub
Sub ctxm_Action
Dim Mi As MenuItem = Sender
Log(Mi.Text)
End Sub
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private xui As XUI
Private Label1 As Label
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("Layout1")
MainForm.Show
Dim ctxMenu As ContextMenu
ctxMenu.Initialize("")
Dim MT() As String = Array As String("MI1","MI2","MI3")
For i = 0 To MT.Length - 1
Dim Mi As MenuItem
Mi.Initialize(MT(i),"ctxm")
ctxMenu.MenuItems.Add(Mi)
Next
Label1.As(JavaObject).RunMethod("setContextMenu",Array(ctxMenu))
End Sub
Sub ctxm_Action
Dim Mi As MenuItem = Sender
Log(Mi.Text)
End Sub
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private xui As XUI
Private Label1 As Label
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("Layout1")
MainForm.Show
Dim ctxMenu As ContextMenu
ctxMenu.Initialize("")
Dim MT() As String = Array As String("MI1","MI2","MI3")
For i = 0 To MT.Length - 1
Dim Mi As MenuItem
Mi.Initialize(MT(i),"ctxm")
ctxMenu.MenuItems.Add(Mi)
Next
'Add a sub menu
Dim SubMenu As Menu
SubMenu.Initialize("Sub Menu1","")
Dim SMT() As String = Array As String("SMI1","SMI2","SMI3")
For i = 0 To SMT.Length - 1
Dim Mi As MenuItem
Mi.Initialize(SMT(i),"ctxm")
SubMenu.MenuItems.Add(Mi)
Next
ctxMenu.MenuItems.Add(SubMenu)
Label1.As(JavaObject).RunMethod("setContextMenu",Array(ctxMenu))
End Sub
Sub ctxm_Action
Dim Mi As MenuItem = Sender
Log(Mi.Text)
End Sub
Thanks SteveIt's as simple as adding a Menu object instead of a MenuItem object:
B4X:Sub Process_Globals Private fx As JFX Private MainForm As Form Private xui As XUI Private Label1 As Label End Sub Sub AppStart (Form1 As Form, Args() As String) MainForm = Form1 MainForm.RootPane.LoadLayout("Layout1") MainForm.Show Dim ctxMenu As ContextMenu ctxMenu.Initialize("") Dim MT() As String = Array As String("MI1","MI2","MI3") For i = 0 To MT.Length - 1 Dim Mi As MenuItem Mi.Initialize(MT(i),"ctxm") ctxMenu.MenuItems.Add(Mi) Next 'Add a sub menu Dim SubMenu As Menu SubMenu.Initialize("Sub Menu1","") Dim SMT() As String = Array As String("SMI1","SMI2","SMI3") For i = 0 To SMT.Length - 1 Dim Mi As MenuItem Mi.Initialize(SMT(i),"ctxm") SubMenu.MenuItems.Add(Mi) Next ctxMenu.MenuItems.Add(SubMenu) Label1.As(JavaObject).RunMethod("setContextMenu",Array(ctxMenu)) End Sub Sub ctxm_Action Dim Mi As MenuItem = Sender Log(Mi.Text) End Sub
Thanks Steve105 that works great ... i did try something like this but it didn't work.It's as simple as adding a Menu object instead of a MenuItem object:
B4X:Sub Process_Globals Private fx As JFX Private MainForm As Form Private xui As XUI Private Label1 As Label End Sub Sub AppStart (Form1 As Form, Args() As String) MainForm = Form1 MainForm.RootPane.LoadLayout("Layout1") MainForm.Show Dim ctxMenu As ContextMenu ctxMenu.Initialize("") Dim MT() As String = Array As String("MI1","MI2","MI3") For i = 0 To MT.Length - 1 Dim Mi As MenuItem Mi.Initialize(MT(i),"ctxm") ctxMenu.MenuItems.Add(Mi) Next 'Add a sub menu Dim SubMenu As Menu SubMenu.Initialize("Sub Menu1","") Dim SMT() As String = Array As String("SMI1","SMI2","SMI3") For i = 0 To SMT.Length - 1 Dim Mi As MenuItem Mi.Initialize(SMT(i),"ctxm") SubMenu.MenuItems.Add(Mi) Next ctxMenu.MenuItems.Add(SubMenu) Label1.As(JavaObject).RunMethod("setContextMenu",Array(ctxMenu)) End Sub Sub ctxm_Action Dim Mi As MenuItem = Sender Log(Mi.Text) End Sub
Just out of interest where did you find this information .... I did search but found nothing that helped.Thanks Steve
Thanks Steve105 that works great ... i did try something like this but it didn't work.
I'm not sure now, I've been using it for a long time.Just out of interest where did you find this information