La guerre des menus

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

La guerre des menus

Message par JohnJohnsonSHERMAN »

Salut a tous !
Vioci mon probléme : quand je crée une barre de menu, puis ensuite un menu popup, seul le popup s´affiche. Si je place le code du popup avant celui du menu, alors c´est le menu qui saffiche, et un poup vide quand on clicque droitement (j´invente des mots...)

Code : Tout sélectionner

CreateMenu(#menu,"fichier")
MenuItem(#ouvrir,"ouvrir)
MenuItem(#options,"options)
...
CreatePopupMenu(#popup)
MenuItem(#suiv,"suivant")
Autres items... on s´en fout

Et la seul le popup s´affiche!
HELP!
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: La guerre des menus

Message par Marc56 »

JohnJohnsonSHERMAN a écrit : Et la seul le popup s´affiche!
À mon avis tu as le même numéro pour #menu et #popup.
Vérifie avec un Debug (voir exemple ci-dessous)

Code : Tout sélectionner

CreateMenu(#menu,"fichier")
MenuItem(#ouvrir,"ouvrir)
MenuItem(#options,"options)
...
CreatePopupMenu(#popup)
MenuItem(#suiv,"suivant")

; --- Vérification
Debug #menu
Debug #popup
Solution: Utilise Enumeration et met bien toutes les constantes menu dans la même section.

Code : Tout sélectionner

Enumeration FormMenu
  #menu
  #popup
EndEnumeration
Encore mieux pour la suite, préfixe tes constantes, variables, procédures
Perso, je fais comme ça:

Code : Tout sélectionner

Enumeration FormMenu
  #Mnu_Window_Main
  #Mnu_PopUp_EditBox
  #Mnu_PopUp_TrayIcon
EndEnumeration
Beaucoup plus facile dès que le projet prend de l'ampleur.
:wink:
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: La guerre des menus

Message par venom »

Bonjour,
Exemple de la doc ( touche F1 ) :wink:

Code : Tout sélectionner

 If OpenWindow(0, 200, 200, 220, 120, "Exemple de menu contextuel")
    
   If CreateMenu(0, WindowID(0))
    MenuTitle("Projet")
      MenuItem( 1, "Ouvrir")
      MenuItem( 2, "Enregistrer")
      MenuBar()
      MenuItem( 4, "Quitter")

    MenuTitle("Edition")
      MenuItem( 8, "Cut")
      MenuItem( 9, "Copy")
      MenuItem(10, "Paste")
  EndIf
  
  
    If CreatePopupMenu(1)        ; La création du menu contextuel commence...
      MenuTitle("Projet")        ; Vous pouvez utiliser toutes les commandes relatives au menu,
        MenuItem(1, "Ouvrir")    ; comme si c'était un menu normal...
        MenuItem(2, "Enregistrer")
        MenuItem(4, "Quitter")
      EndIf
      
    Repeat
      Event = WaitWindowEvent()
      Select Event                        ; Examine quel type d'évènement est survenu sur la fenêtre
        Case #PB_Event_RightClick         ; Le bouton droit de la souris a été clické =>
          DisplayPopupMenu(1,WindowID(0)) ; On affiche le menu contextuel
        
        Case #PB_Event_Menu      ; Un élément du menu a été sélectionné
          Select EventMenu()     ; On recupère le numéro de cet élement...
            Case 1 : Debug "Menu : Ouvrir"
            Case 2 : Debug "Menu : Enregistrer"
            Case 4 : End
          EndSelect

      EndSelect
    Until Event = #PB_Event_CloseWindow
  EndIf





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: La guerre des menus

Message par JohnJohnsonSHERMAN »

Merzi , c'était tout con et ca marche maintenant!!! En effet, c'était bien les deux menus qui avaient le même numéro... Bon ben merci en tout cas!!
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

Re: La guerre des menus

Message par celtic88 »

La guerre des menus ! :lol:
.....i Love Pb :)
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: La guerre des menus

Message par JohnJohnsonSHERMAN »

En effet! Quand je pense que j´y ait passé une ou deux heures a me cramer les neurones pour un truc tout con (j´avait deux énum´ qui donnaient les memes numéros). En tout cas merci!
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: La guerre des menus

Message par microdevweb »

Personnellement pour éviter tout conflit j'utilise la même énumération pour toutes mes fenêtres et gadgets, tu peux également appelé l'énumération à différent endroit du code il suffit pour cela de la nommé

Exemple:

Code : Tout sélectionner

Enumeration Form
   #MainForm
EndEnumeration

; Code de main form

Enumeration Form
   #ClientForm
EndEnumeration

; Code Client form etc...

Dans le cas de gadget dynamique je préfère utilisé #Pb_Any en lieux et place d'une énumération
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre