BindMenuEvent Bug oder Denkfehler
Verfasst: 25.03.2022 20:07
Bei der Verknüpfung einer Procedure für einen Menüeintrag mit BindMenuEvent wird auch die MenuID als erster Parameter angegeben. Bisher bin ich davon ausgegangen, dass dieser Parameter auch bei BindEventMenu berücksichtigt wird.
Dies scheint bei folgendem Code aber nicht der Fall zu sein:
Auch bei der Auswahl des Popupmenüs wird die Procedure TestHandler ausgelöst, obwohl BindMenuEvent nur mit #Menu verbunden sein sollte.
Wenn man die kommentierte Zeile anwendet wird sogar die Procedure TestHandler bei beiden Menüeinträgen jeweils zweimal aufgerufen.
Scheinbar unterscheidet BindMenuEvent nicht zwischen den einzelnen Menüs sondern nur zwischen den Menüeinträgen.
Dies scheint bei folgendem Code aber nicht der Fall zu sein:
Code: Alles auswählen
Enumeration
#Window
#Menu
#PopupMenu
#MenuitemTest
#MenuItemQuit
EndEnumeration
Procedure TestHandler()
Debug "Test menu event"
EndProcedure
Procedure QuitHandler()
Debug "Quit menu event"
EndProcedure
OpenWindow(#Window, 100, 100, 300, 300, "Click test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreatePopupMenu(#PopupMenu)
MenuItem(#MenuitemTest, "Test")
;BindMenuEvent(#PopupMenu, #MenuitemTest, @TestHandler())
CreateMenu(#Menu, WindowID(#Window))
MenuTitle("File")
MenuItem(#MenuitemTest, "Test")
MenuItem(#MenuItemQuit, "Quit")
BindMenuEvent(#Menu, #MenuitemTest, @TestHandler())
BindMenuEvent(#Menu, #MenuItemQuit, @QuitHandler())
Repeat
Event = WaitWindowEvent()
If event = #PB_Event_RightClick
DisplayPopupMenu(#PopupMenu, WindowID(#Window))
EndIf
Until Event = #PB_Event_CloseWindow
Wenn man die kommentierte Zeile anwendet wird sogar die Procedure TestHandler bei beiden Menüeinträgen jeweils zweimal aufgerufen.
Scheinbar unterscheidet BindMenuEvent nicht zwischen den einzelnen Menüs sondern nur zwischen den Menüeinträgen.