Intercettare selezione di Menu

Da Gambas-it.org - Wikipedia.

Per intercettare la sola e semplice selezione delle sottovoci di un Menu, ossia quando si scorre con il puntatore del mouse sugli item di una voce principale di Menu, è possibile utilizzare un codice come il seguente:

Private Menu2 As Menu
Private Menu3 As Menu
Private Menu4 As Menu
Private Label1 As Label
Private tm As Timer


Public Sub Form_Open()
 
 Dim Menu1 As Menu

 With Menu1 = New Menu(Me) As "Menu1"
   .Caption = "Menu1"
 End With
 With Menu2 = New Menu(Menu1) As "Menu2"
   .Caption = "Menu2"
   .Tag = "Questo è il Menu2 !"
 End With
 With Menu3 = New Menu(Menu1) As "Menu3"
   .Caption = "Menu3"
   .Tag = "Questo è il Menu3 !"
 End With
 With Menu4 = New Menu(Menu1) As "Menu4"
   .Caption = "Menu4"
   .Tag = "Questo è il Menu4 !"
 End With
 
 With Label1 = New Label(Me)
   .W = 200
   .H = 30
   .X = (Me.W * 0.5) - (.W * 0.5)
   .Y = Me.H * 0.6
   .Border = Border.Plain
   .Alignment = Align.Center
   .Foreground = Color.Red
 End With
 
End

Public Sub Menu1_Show()
 
 With tm = New Timer As "Tempus"
   .Delay = 20
   .Start
 End With
  
End

Public Sub Tempus_Timer()
 
 Dim rt2 As New Rect(Me.ScreenX + 10, Me.ScreenY + 26, Me.Font.TextWidth(Menu2.Caption) + 20, Me.Font.TextHeight(Menu2.Caption))
 Dim rt3 As New Rect(Me.ScreenX + 10, Me.ScreenY + 50, Me.Font.TextWidth(Menu3.Caption) + 20, Me.Font.TextHeight(Menu3.Caption))
 Dim rt4 As New Rect(Me.ScreenX + 10, Me.ScreenY + 72, Me.Font.TextWidth(Menu4.Caption) + 20, Me.Font.TextHeight(Menu4.Caption))
 
 Label1.Text = Null
 If rt2.Contains(Mouse.ScreenX, Mouse.ScreenY) Then Label1.Text = Menu2.Tag
 If rt3.Contains(Mouse.ScreenX, Mouse.ScreenY) Then Label1.Text = Menu3.Tag
 If rt4.Contains(Mouse.ScreenX, Mouse.ScreenY) Then Label1.Text = Menu4.Tag
 
End

Public Sub Menu1_Hide()
 
 tm.Stop
 
End