Seite 2 von 2

Verfasst: 16.10.2008 22:38
von ts-soft
Kaeru Gaman hat geschrieben:für POPUP-menus gibts dochn eigenes Disable...? :|
Nein, ist doch dasselbe wie ein Menu, lediglich das man es als PopUp einblendet.

Verfasst: 16.10.2008 22:46
von Kaeru Gaman
argl.. hab mich verlesen... Bild

Verfasst: 16.10.2008 23:00
von Regenduft
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. :oops:

EDIT: :lol: ROFL! :lol: Habe zu langsam getippt! Da hat wohl jemand Display und Disable durcheinandergebracht! :wink:

Verfasst: 17.10.2008 21:21
von Ligatur
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


Verfasst: 18.10.2008 16:32
von Regenduft
@Ligatur: Super! :allright:

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
...hätte ich eigentlich gleich drauf kommen können...