Page 1 sur 1
La guerre des menus
Publié : lun. 28/déc./2015 11:46
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!
Re: La guerre des menus
Publié : lun. 28/déc./2015 12:48
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.
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.

Re: La guerre des menus
Publié : lun. 28/déc./2015 13:51
par venom
Bonjour,
Exemple de la doc ( touche F1 )
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
@++
Re: La guerre des menus
Publié : lun. 28/déc./2015 16:31
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!!
Re: La guerre des menus
Publié : lun. 28/déc./2015 16:37
par celtic88
La guerre des menus !

Re: La guerre des menus
Publié : mar. 29/déc./2015 10:36
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!
Re: La guerre des menus
Publié : mar. 29/déc./2015 10:54
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