Page 1 sur 1

probleme CreatePopupMenu multiple

Publié : mar. 17/oct./2017 12:22
par Guillot
salut tout le monde

j'ai un probleme avec CreatePopupMenu lorsque je veux en faire cohabiter plusieurs en même temps
dans l'exemple ci dessous, j'en crée 3, mais lorsque je les appelles, les evennements des 3 se déclanche simultanement
est ce que je fais une erreur dans la façon de les utiliser ?

Code : Tout sélectionner

Procedure test0()
    DisplayPopupMenu(0,WindowID(0))
EndProcedure

Procedure test1()
    DisplayPopupMenu(1,WindowID(0))
EndProcedure

Procedure test2()
    DisplayPopupMenu(1,WindowID(0))
EndProcedure

Procedure event_menu0()
Debug "menu 0 "+EventMenu()    
EndProcedure

Procedure event_menu1()
Debug "menu 1 "+EventMenu()    
EndProcedure

Procedure event_menu2()
Debug "menu 2 "+EventMenu()    
EndProcedure

OpenWindow(0,0,0,800,600,"",#PB_Window_ScreenCentered)
ButtonGadget(0,10,10,100,20,"popup 0"):BindGadgetEvent(0,@ test0())
ButtonGadget(1,10,50,100,20,"popup 1"):BindGadgetEvent(1,@ test1())
ButtonGadget(2,10,90,100,20,"popup 2"):BindGadgetEvent(2,@ test2())

CreatePopupMenu(0)
For i=0 To 5
    MenuItem(i,"menu 0 - item "+Str(i))
    BindMenuEvent(0,i,@ event_menu0())
Next

CreatePopupMenu(1)
For i=0 To 5
    MenuItem(i,"menu 1 - item "+Str(i))
    BindMenuEvent(1,i,@ event_menu1())
Next

CreatePopupMenu(2)
For i=0 To 5
    MenuItem(i,"menu 2 - item "+Str(i))
    BindMenuEvent(2,i,@ event_menu2())
Next

Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow

Re: probleme CreatePopupMenu multiple

Publié : mar. 17/oct./2017 12:35
par falsam
Un numéro d'item unique et ton code fonctionne

Code : Tout sélectionner

CreatePopupMenu(0)
For i=0 To 5
  MenuItem(i,"menu 0 - item "+Str(i))
  BindMenuEvent(0, i, @event_menu0())
Next

CreatePopupMenu(1)
For i=6 To 10
  MenuItem(i,"menu 1 - item "+Str(i))
  BindMenuEvent(1, i, @event_menu1())
Next

CreatePopupMenu(2)
For i=11 To 15
  MenuItem(i,"menu 2 - item "+Str(i))
  BindMenuEvent(2, i, @event_menu2())
Next

Re: probleme CreatePopupMenu multiple

Publié : mar. 17/oct./2017 12:59
par falsam
Ton code pourrait être simplifier de cette maniére

Code : Tout sélectionner

Procedure test()
  Protected g = EventGadget()
  DisplayPopupMenu(g, WindowID(0))
EndProcedure

Procedure event_menu()
  Protected i = EventMenu()
  
  Select i
     ;Tes différentes actions
  EndSelect
EndProcedure

OpenWindow(0,0,0,800,600,"",#PB_Window_ScreenCentered)
ButtonGadget(0,10,10,100,20,"popup 0"):BindGadgetEvent(0, @test())
ButtonGadget(1,10,50,100,20,"popup 1"):BindGadgetEvent(1, @test())
ButtonGadget(2,10,90,100,20,"popup 2"):BindGadgetEvent(2, @test())

CreatePopupMenu(0)
For i=0 To 5
  MenuItem(i,"menu 0 - item "+Str(i))
  BindMenuEvent(0, i, @event_menu())
Next

CreatePopupMenu(1)
For i=6 To 10
  MenuItem(i,"menu 1 - item "+Str(i))
  BindMenuEvent(1, i, @event_menu())
Next

CreatePopupMenu(2)
For i=11 To 15
  MenuItem(i,"menu 2 - item "+Str(i))
  BindMenuEvent(2, i, @event_menu())
Next

Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow

Re: probleme CreatePopupMenu multiple

Publié : mar. 17/oct./2017 16:03
par Guillot
ok
les n° d'item doivent etre unique même si ils appartiennent à des menus differents!
curieux...

merci pour l'info