I'm struggling at this point:
Code: Select all
MyMenuSub1 := Menu()
MyMenuSub1.Add SubName, MenuHandler
Has anybody a solution?
Code: Select all
MyMenuSub1 := Menu()
MyMenuSub1.Add SubName, MenuHandler
Code: Select all
#Requires AutoHotkey v2.0
Persistent
m := []
Loop 2
m.Push(Menu())
, m[A_Index].Add('Test' A_Index, go)
m[1].Show()
m[2].Show()
go(ItemName, ItemPos, MyMenu) {
MsgBox ItemName ': Position = ' ItemPos
}
Code: Select all
ItemsList := "
(
Sub1,Sub Item 1a
Sub1,Sub Item 1b
Sub1,Sub Item 1c
Sub2,Sub Item 2a
Sub2,Sub Item 2b
,Main Item 1
,Main Item 2
,Main Item 3
,Main Item 4
)"
SubList := ""
SubName := ""
ItemName := ""
Loop, Parse, ItemsList, `n, `r
{
ItemsArray := StrSplit(A_LoopField, ",")
SubName := ItemsArray[1]
ItemName := ItemsArray[2]
If (ItemName) {
Menu, ItemsMenu%SubName%, Add, %ItemName%, MenuHandler
}
If (SubName != "" And InStr(SubList, SubName) = 0) {
SubList := SubList . SubName . "`n"
Menu, ItemsMenu, Add, %SubName%, :ItemsMenu%SubName%
}
}
Menu, ItemsMenu, Show
Return
MenuHandler(ItemName) {
MsgBox, % 0+64+0+4096, Info, You selected %ItemName%
}
Code: Select all
#Requires AutoHotkey v2.0
ItemsList := "
(
Sub1,Sub Item 1a
Sub1,Sub Item 1b
Sub1,Sub Item 1c
Sub2,Sub Item 2a
Sub2,Sub Item 2b
,Main Item 1
,Main Item 2
,Main Item 3
,Main Item 4
)"
SubName := ''
ItemName := ''
ItemsMenu := Map()
ItemsMenu.CaseSense := "Locale"
ItemsMenu[''] := Menu() ; the main menu is stored with key ''
Loop Parse, ItemsList, "`n", "`r" {
ItemsArr := StrSplit(A_LoopField, ",")
SubName := ItemsArr[1]
ItemName := ItemsArr[2]
If (SubName != '') && !ItemsMenu.Has(SubName) {
ItemsMenu[SubName] := Menu()
ItemsMenu[''].Add(SubName, ItemsMenu[SubName])
}
If (ItemName)
ItemsMenu[SubName].Add(ItemName, MenuHandler)
}
ItemsMenu[''].Show()
Return
MenuHandler(ItemName, *) {
MsgBox("You selected" . ItemName, "Info", 0+64+0+4096)
}