Page 1 sur 1

Changer le look d'un menu en cours d'exécution

Publié : jeu. 03/déc./2015 14:18
par Marc56
Hello,

CreateImageMenu, CreatePopupImageMenu ont une option #PB_Menu_ModernLook qui permet de leur donner le 'look' office (barre verticale dégradée et couleur différente de la barre de sélection).

J'aimerais donner à mes utilisateurs la possibilité d'activer ou non ce look 'office'
(de plus, le gestionnaire de Form n'a pas cette option, il faut l'ajouter à la main avant de compiler puis le remettre à chaque fois)

Question: Peut-on changer ce paramètre (c'est à dire le look d'un menu) en cours d’exécution du programme ?

Il y a bien sûr la possibilité de supprimer le menu puis de le re-créer, mais je n'ai pas testé
(= pas vérifié que ça ne met pas la zone dans les ID)

:?:

Re: Changer le look d'un menu en cours d'exécution

Publié : jeu. 03/déc./2015 14:54
par falsam
Bonjour Marc.

Rien en natif pour changer l'attribut du style de menu.
Marc56 a écrit :l y a bien sûr la possibilité de supprimer le menu puis de le re-créer
La solution est effectivement là.

Code : Tout sélectionner

Enumeration Window
  #MainForm
  #MainMenu
EndEnumeration

Enumeration Gadget
  #Click
EndEnumeration

Declare MainFormShow()
Declare MainMenuShow()

MainFormShow()

Procedure MainFormShow()
  If OpenWindow(#MainForm, 0, 0, 500, 300, "New Project", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)          
    ButtonGadget(#Click, 400, 20, 80, 22, "Click me")
    
    MainMenuShow()  
    BindGadgetEvent(#Click, @MainMenuShow())    
    
    Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
  EndIf
EndProcedure


Procedure MainMenuShow()
  Protected ModernLook = GetGadgetData(#Click)
  
  If ModernLook = #False
    SetGadgetData(#Click, #PB_Menu_ModernLook)
  Else
    SetGadgetData(#Click, #False)
  EndIf
  
  If CreateImageMenu(#MainMenu, WindowID(#MainForm), ModernLook)  
    MenuTitle("Project")
    MenuItem(1, "Open"   +Chr(9)+"Ctrl+O")
    MenuItem(2, "Save"   +Chr(9)+"Ctrl+S")
    MenuItem(3, "Save as"+Chr(9)+"Ctrl+A")
    MenuItem(4, "Close"  +Chr(9)+"Ctrl+C")
  EndIf
EndProcedure
Click Me and Show Menu :wink:

Re: Changer le look d'un menu en cours d'exécution

Publié : jeu. 03/déc./2015 14:59
par Marc56
Merci falsam,

J'avais pensé qu'il fallait aussi utiliser FreeMenu() avant de re-créer, mais ça marche.

:wink: