Nein, ist doch dasselbe wie ein Menu, lediglich das man es als PopUp einblendet.Kaeru Gaman hat geschrieben:für POPUP-menus gibts dochn eigenes Disable...?
Button und Menü
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Hä? Ich glaub ich steh' gerade mal wieder voll auf der Leitung... oder ich bin blind (für Insider: wie bei Filesize). Ich habe gerade die Anleitung gelesen... Aber da ist nur DisplayPopupMenue(). Ich raffs nicht. 
EDIT:
ROFL!
Habe zu langsam getippt! Da hat wohl jemand Display und Disable durcheinandergebracht! 

EDIT:



PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Für Windows geht es so:
Code: Alles auswählen
#MenNr = 1
If OpenWindow(0, 200, 200, 200, 100, "DisableMenuItem Example")
If CreateMenu(0, WindowID(0))
MenuTitle("Project")
MenuItem(1, "Open")
MenuItem(2, "Save")
MenuTitle("Edit")
MenuItem(3, "Copy")
MenuItem(4, "Paste")
MenuTitle("Options")
MenuItem(3, "Color")
MenuItem(4, "Position")
ButtonGadget(0, 5, 5, 80, 20, "Disable Menu", #PB_Button_Toggle)
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
MenID = MenuID(0)
If GetGadgetState(0)
EnableMenuItem_(MenID, #MenNr, #MF_BYPOSITION | #MF_GRAYED)
Else
EnableMenuItem_(MenID, #MenNr, #MF_BYPOSITION | #MF_ENABLED)
EndIf
RedrawWindow_(WindowID(0), 0, 0, #RDW_FRAME | #RDW_INVALIDATE)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
@Ligatur: Super! 
Mir ist übrigens auch noch eine ganz primitive Lösung ohne WinAPI eingefallen, wie man ein komplettes (Popup-)Menü disablet (aus Bequemlichkeit Ligaturs Quellcode als Basis):
...hätte ich eigentlich gleich drauf kommen können...

Mir ist übrigens auch noch eine ganz primitive Lösung ohne WinAPI eingefallen, wie man ein komplettes (Popup-)Menü disablet (aus Bequemlichkeit Ligaturs Quellcode als Basis):
Code: Alles auswählen
Procedure DisableMenu(Menu, State)
If IsMenu(Menu)
Protected i
For i = 0 To $FFFF ; sollte ausreichen ;-)
DisableMenuItem(Menu, i, State)
Next i
EndIf
EndProcedure
If OpenWindow(0, 200, 200, 200, 100, "DisableMenuItem Example")
ButtonGadget(0, 5, 5, 80, 20, "Disable Menu", #PB_Button_Toggle)
If CreatePopupMenu(0)
MenuItem(1, "Open")
MenuItem(2, "Save")
MenuItem(3, "Copy")
MenuItem(4, "Paste")
MenuItem(5, "Color")
MenuItem(6, "Position")
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
If EventGadget() = 0
DisableMenu(0, GetGadgetState(0))
EndIf
EndIf
If GetAsyncKeyState_(#VK_RBUTTON)
DisplayPopupMenu(0, WindowID(0))
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)