Disable "SubMenu()"?

Just starting out? Need help? Post your questions and find answers here.
jassing
Addict
Addict
Posts: 1745
Joined: Wed Feb 17, 2010 12:00 am

Disable "SubMenu()"?

Post by jassing »

Is there a way to disable a submenu item?
This is for a windows app, if it matters.
User avatar
Droopy
Enthusiast
Enthusiast
Posts: 658
Joined: Thu Sep 16, 2004 9:50 pm
Location: France
Contact:

Re: Disable "SubMenu()"?

Post by Droopy »

DisableMenuItem ?
jassing
Addict
Addict
Posts: 1745
Joined: Wed Feb 17, 2010 12:00 am

Re: Disable "SubMenu()"?

Post by jassing »

Droopy wrote:DisableMenuItem ?
Yes, that would be for a menuitem(), not a submenu()
buddymatkona
Enthusiast
Enthusiast
Posts: 252
Joined: Mon Aug 16, 2010 4:29 am

Re: Disable "SubMenu()"?

Post 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
User avatar
Shield
Addict
Addict
Posts: 1021
Joined: Fri Jan 21, 2011 8:25 am
Location: 'stralia!
Contact:

Re: Disable "SubMenu()"?

Post 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
Image
Blog: Why Does It Suck? (http://whydoesitsuck.com/)
"You can disagree with me as much as you want, but during this talk, by definition, anybody who disagrees is stupid and ugly."
- Linus Torvalds
jassing
Addict
Addict
Posts: 1745
Joined: Wed Feb 17, 2010 12:00 am

Re: Disable "SubMenu()"?

Post by jassing »

Shield wrote:

Code: Select all

	EnableMenuItem_(MenuID(0), handle, #MF_BYCOMMAND | #MF_GRAYED)
Great! Thank you.
User avatar
nco2k
Addict
Addict
Posts: 1344
Joined: Mon Sep 15, 2003 5:55 am

Re: Disable "SubMenu()"?

Post 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
If OSVersion() = #PB_OS_Windows_ME : End : EndIf
jassing
Addict
Addict
Posts: 1745
Joined: Wed Feb 17, 2010 12:00 am

Re: Disable "SubMenu()"?

Post by jassing »

nco2k wrote:

Code: Select all

      handle = OpenSubMenu("Recent files")       ; begin sub-menu
     DisableMenuItem(0, handle, #True)
Even slicker!
BarryG
Addict
Addict
Posts: 3294
Joined: Thu Apr 18, 2019 8:17 am

Re: Disable "SubMenu()"?

Post 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
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4637
Joined: Sun Apr 12, 2009 6:27 am

Re: Disable "SubMenu()"?

Post by RASHAD »

Hi Barry

Code: Select all

EnableMenuItem_(MenuID(popup), handle, #MF_BYCOMMAND | #MF_GRAYED)
Egypt my love
BarryG
Addict
Addict
Posts: 3294
Joined: Thu Apr 18, 2019 8:17 am

Re: Disable "SubMenu()"?

Post by BarryG »

Thanks Rashad but I edited my post before you replied, because I worked out it could be done without API. :)
Post Reply