Page 1 of 1

Disable "SubMenu()"?

Posted: Mon Dec 31, 2012 7:43 pm
by jassing
Is there a way to disable a submenu item?
This is for a windows app, if it matters.

Re: Disable "SubMenu()"?

Posted: Mon Dec 31, 2012 8:13 pm
by Droopy
DisableMenuItem ?

Re: Disable "SubMenu()"?

Posted: Tue Jan 01, 2013 4:54 am
by jassing
Droopy wrote:DisableMenuItem ?
Yes, that would be for a menuitem(), not a submenu()

Re: Disable "SubMenu()"?

Posted: Tue Jan 01, 2013 5:45 am
by buddymatkona
Menu or submenu does not seem to matter with Disable().

Code: Select all

If OpenWindow(0, 200, 200, 220, 100, "SubMenu Example")
    If CreateMenu(0, WindowID(0))
      MenuTitle("Project") 
        MenuItem(1, "Open")  
        MenuItem(2, "Close")
        MenuBar()
        OpenSubMenu("Recent files")       ; begin sub-menu
          MenuItem( 3, "C:\Autoexec.bat")
          MenuItem( 4, "D:\Test.txt")
        CloseSubMenu()                    ; end sub-menu
      EndIf
      DisableMenuItem(0, 4, 1)     ; disable the second submenu item ("D:\Test.txt")
    Repeat 
      
     Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf

Re: Disable "SubMenu()"?

Posted: Tue Jan 01, 2013 6:39 am
by Shield
He wants to disable "Recent files", not the menu item inside the sub menu.
Use this:

Code: Select all

if OpenWindow(0, 200, 200, 220, 100, "SubMenu Example")
	if CreateMenu(0, WindowID(0))
		MenuTitle("Project") 
		MenuItem(1, "Open")  
		MenuItem(2, "Close")
		MenuBar()
		handle = OpenSubMenu("Recent files")       ; begin sub-menu
		MenuItem( 3, "C:\Autoexec.bat")
		MenuItem( 4, "D:\Test.txt")
		CloseSubMenu()                    ; end sub-menu
	endif
	EnableMenuItem_(MenuID(0), handle, #MF_BYCOMMAND | #MF_GRAYED)
	repeat 
		
	until WaitWindowEvent()=#PB_Event_CloseWindow
endif

Re: Disable "SubMenu()"?

Posted: Tue Jan 01, 2013 9:16 am
by jassing
Shield wrote:

Code: Select all

	EnableMenuItem_(MenuID(0), handle, #MF_BYCOMMAND | #MF_GRAYED)
Great! Thank you.

Re: Disable "SubMenu()"?

Posted: Tue Jan 01, 2013 11:54 am
by nco2k

Code: Select all

If OpenWindow(0, 200, 200, 220, 100, "SubMenu Example")
   If CreateMenu(0, WindowID(0))
      MenuTitle("Project")
      MenuItem(1, "Open")
      MenuItem(2, "Close")
      MenuBar()
      handle = OpenSubMenu("Recent files")       ; begin sub-menu
      MenuItem( 3, "C:\Autoexec.bat")
      MenuItem( 4, "D:\Test.txt")
      CloseSubMenu()                    ; end sub-menu
   EndIf
   DisableMenuItem(0, handle, #True)
   Repeat
   Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
c ya,
nco2k

Re: Disable "SubMenu()"?

Posted: Tue Jan 01, 2013 8:46 pm
by jassing
nco2k wrote:

Code: Select all

      handle = OpenSubMenu("Recent files")       ; begin sub-menu
     DisableMenuItem(0, handle, #True)
Even slicker!

Re: Disable "SubMenu()"?

Posted: Wed Jun 12, 2019 5:10 am
by BarryG
For my own future reference for a PopupImageMenu:

Code: Select all

If OpenWindow(0, 200, 200, 220, 100, "SubMenu Example")
  popup = CreatePopupImageMenu(#PB_Any)
  If popup
    MenuTitle("Project")
    MenuItem(1, "Open") 
    MenuItem(2, "Close")
    MenuBar()
    sub = OpenSubMenu("Recent files") ; Want this disabled.
    MenuItem( 3, "C:\Autoexec.bat")
    MenuItem( 4, "D:\Test.txt")
    CloseSubMenu()
  EndIf
  DisableMenuItem(popup, sub, 1)
  DisplayPopupMenu(popup, WindowID(0), WindowX(0) + 20, WindowY(0) + 40)
  Repeat
  Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf

Re: Disable "SubMenu()"?

Posted: Wed Jun 12, 2019 5:18 am
by RASHAD
Hi Barry

Code: Select all

EnableMenuItem_(MenuID(popup), handle, #MF_BYCOMMAND | #MF_GRAYED)

Re: Disable "SubMenu()"?

Posted: Wed Jun 12, 2019 5:52 am
by BarryG
Thanks Rashad but I edited my post before you replied, because I worked out it could be done without API. :)