Menu, MenuName, Cmd Topic is solved

Propose new features and changes
eagerahk
Posts: 122
Joined: 02 Dec 2015, 06:27

Menu, MenuName, Cmd

18 Sep 2017, 04:44

If we could enhance the command Menu, MenuName, Cmd, so that even if a SubMenu does not exist, AHK will automatically build it without our knowledge. In the following code, we can build the popup menu in the sequence of Layer 1, Layer 2, Layer 2, Layer 1, Layer 2, Layer 2, which is clearer than how a popup menu needs to be built now--Layer 2, Layer 2, Layer 1, Layer 2, Layer 2, Layer 1. If AHK can automatically build any submenu if it does not exist, we do not need to code the initial statement to define Menus, G1 ~ G13. Thanks for reading!

Code: Select all

#singleinstance force
; must define all SubMenus,G1 ~ G13, first, to avoid seeing 「SubMenu does not exist」 error msg

Menu, G1, Add, USA, :G2
    Menu, G2, Add, New York, MenuHandler
    Menu, G2, Add, Los Angeles, MenuHandler
    Menu, G2, Add, Chicago, MenuHandler
    Menu, G2, Add, San Francisco, MenuHandler
    Menu, G2, Add, Boston, MenuHandler
Menu, G1, Add, Abroad, :G3
    Menu, G3, Add, Europe, :G4
        Menu, G4, Add, Sweden, MenuHandler
        Menu, G4, Add, Denmark, :G5
            Menu, G5, Add, Copenhagen, MenuHandler
            Menu, G5, Add, Tivoli Park, MenuHandler
        Menu, G4, Add, Norway, :G6
            Menu, G6, Add, Oslo, MenuHandler
        Menu, G4, Add, Germany, :G7
            Menu, G7, Add, Berlin, MenuHandler
			Menu, G7, Add, the Rhine, MenuHandler
		Menu, G4, Add, UK, :G8
            Menu, G8, Add, London, MenuHandler
			Menu, G8, Add, Liverpool, MenuHandler
		Menu, G4, Add, France, :G9
            Menu, G9, Add, Paris, MenuHandler
			Menu, G9, Add, Marseille, MenuHandler
    Menu, G3, Add, Asia, :G10
        Menu, G10, Add, Japan, :G11
            Menu, G11, Add, Tokyo, :G12
               Menu, G12, Add, Shinjuku, :G13
                   Menu, G13, Add, East Gate, MenuHandler
                   Menu, G13, Add, Imperial Garden, MenuHandler
			Menu, G11, Add, Osaka, MenuHandler
    
menu, G1, Add, leave

Menu, G1, Show, 1500, 500
return
MenuHandler:
MsgBox You selected "%A_ThisMenuItem%" from the menu %A_ThisMenu%.
return
leave:
menu, G1, DeleteAll
return
exit


Last edited by eagerahk on 21 Sep 2017, 23:52, edited 3 times in total.
User avatar
jeeswg
Posts: 6902
Joined: 19 Dec 2016, 01:58
Location: UK

Re: Menu, MenuName, Cmd

18 Sep 2017, 04:54

Yes, this always annoyed me about the Menu command. Perhaps this will work for you:

Code: Select all

Loop, 13
{
	Menu, % "G" A_Index, Add
	Menu, % "G" A_Index, DeleteAll
}
homepage | tutorials | wish list | fun threads | donate
WARNING: copy your posts/messages before hitting Submit as you may lose them due to CAPTCHA
eagerahk
Posts: 122
Joined: 02 Dec 2015, 06:27

Re: Menu, MenuName, Cmd

18 Sep 2017, 04:59

Thanks, jeeswg.
Last edited by eagerahk on 20 Sep 2017, 21:25, edited 1 time in total.
just me
Posts: 9451
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Menu, MenuName, Cmd  Topic is solved

20 Sep 2017, 02:52

If you want to add empty submenus on the fly, you might want to use a function:

Code: Select all

#SingleInstance,  Force

MenuAddEmptySubmenu("G1", "USA", "G2")
   Menu, G2, Add, New York, MenuHandler
   Menu, G2, Add, Los Angeles, MenuHandler
   Menu, G2, Add, Chicago, MenuHandler
   Menu, G2, Add, San Francisco, MenuHandler
   Menu, G2, Add, Boston, MenuHandler
MenuAddEmptySubmenu("G1", "Abroad", "G3")
   MenuAddEmptySubmenu("G3", "Europe", "G4")
      Menu, G4, Add, Sweden, MenuHandler
      MenuAddEmptySubmenu("G4", "Denmark", "G5")
         Menu, G5, Add, Copenhagen, MenuHandler
         Menu, G5, Add, Tivoli Park, MenuHandler
      MenuAddEmptySubmenu("G4", "Norway", "G6")
         Menu, G6, Add, Oslo, MenuHandler
      MenuAddEmptySubmenu("G4", "Germany", "G7")
         Menu, G7, Add, Berlin, MenuHandler
         Menu, G7, Add, the Rhine, MenuHandler
      MenuAddEmptySubmenu("G4", "UK", "G8")
         Menu, G8, Add, London, MenuHandler
         Menu, G8, Add, Liverpool, MenuHandler
      MenuAddEmptySubmenu("G4", "France", "G9")
         Menu, G9, Add, Paris, MenuHandler
			Menu, G9, Add, Marseille, MenuHandler
   MenuAddEmptySubmenu("G3", "Asia", "G10")
      MenuAddEmptySubmenu("G10", "Japan", "G11")
         MenuAddEmptySubmenu("G11", "Tokyo", "G12")
            MenuAddEmptySubmenu("G12", "Shinjuku", "G13")
               Menu, G13, Add, East Gate, MenuHandler
               Menu, G13, Add, Imperial Garden, MenuHandler
			Menu, G11, Add, Osaka, MenuHandler

Menu, G1, Add, Leave

Menu, G1, Show ; , 1500, 500
Return

MenuHandler:
MsgBox You selected "%A_ThisMenuItem%" from the menu %A_ThisMenu%.
Return

Leave:
Menu, G1, DeleteAll
Return
Exit

MenuAddEmptySubmenu(MenuName, ItemName, SubmenuName) {
   Menu, %SubmenuName%, Add
   Menu, %SubmenuName%, DeleteAll
   Menu, %MenuName%, Add, %ItemNAme%, :%SubMenuName%
}
eagerahk
Posts: 122
Joined: 02 Dec 2015, 06:27

Re: Menu, MenuName, Cmd

20 Sep 2017, 03:50

Thanks, just me...Good idea!
Last edited by eagerahk on 21 Sep 2017, 03:48, edited 1 time in total.
just me
Posts: 9451
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Menu, MenuName, Cmd

20 Sep 2017, 03:57

Post it wherever you want. ;)

Return to “Wish List”

Who is online

Users browsing this forum: No registered users and 49 guests