j'ai voulu me lancer dans un générateur de menu, mais je suis un peu à la traine et je dirais même que je rame carrément !
Si vous pouviez m'aider, je ne vous en remercierai jamais assez.
Code : Tout sélectionner
;Générateur de menu
Enumeration Fenetres
#Fenetre_Menu
EndEnumeration
Enumeration Gadgets
#Txt_Test
#Edt
#Txt_Texte
#Btn_Titre
#Txt_Icone
#Txt_Enum
#Btn_Niv_1
#Btn_Niv_2
#Btn_Niv_3
#Btn_Niv_4
#Str_Element_Menu
#Str_Icone
#Str_Enum
#Btn_Separateur
#Btn_Remplacer
#Btn_Inserer
#Btn_Ajouter
#Btn_Vider
#Btn_Supprimer
#Btn_Icone_plus
#Btn_Valider_Element_Menu
#Btn_Icone_Moins
#Btn_Monter_Menu
#Btn_Descendre_Menu
#Txt_Raccourci
#Cmb_Raccourcis
#Chk_Alt
#Chk_Ctrl
#Chk_Shift
#Btn_Annuler
#Btn_Ok
EndEnumeration
Enumeration Polices
#Police
EndEnumeration
Global Evenement, NewList ElementsMenu.s()
LoadFont(#Police, "FontAwesome", 10)
; Fermeture de la fenêtre principale et fin du programme
Procedure Fermer_Fenetre_principale()
CloseWindow(#Fenetre_Menu)
End
EndProcedure
Procedure Separateur()
AddElement(ElementsMenu())
ElementsMenu() = "MenuBar"
SetGadgetText(#Edt, GetGadgetText(#Str_Element_Menu))
EndProcedure
Procedure Remplacer()
EndProcedure
Procedure Inserer()
EndProcedure
Procedure Ajouter()
EndProcedure
Procedure Vider()
EndProcedure
Procedure Supprimer()
EndProcedure
Procedure Icone_plus()
EndProcedure
Procedure Icone_moins()
EndProcedure
Procedure Valider_Element_Menu() ;Valider l'élément du menu
Protected Resultat.s
Static Titre
If titre = 1
AddElement(ElementsMenu())
ElementsMenu() = "MenuTitle(" + GetGadgetText(#Str_Element_Menu) + ")"
EndIf
;SetGadgetText(#Str_Enum, "#Menu_" + GetGadgetText(#Str_Element_Menu))
;Resultat = GetGadgetText(#Str_Enum)
;AddElement(ElementsMenu())
;ElementsMenu() = GetGadgetText(#Str_Element_Menu)
;SetGadgetText(#Edt, GetGadgetText(#Str_Element_Menu))
EndProcedure
Procedure Monter_menu()
EndProcedure
Procedure Descendre_menu()
EndProcedure
Procedure Sauvegarder()
MessageRequester("Information", "Le fichier a été copié dans le presse_papiers", #MB_ICONINFORMATION)
Fermer_Fenetre_principale()
EndProcedure
Procedure Titre() ; titre du menu
Static Titre = 1
ProcedureReturn Titre
EndProcedure
Procedure Niveau_1()
AddElement(ElementsMenu())
ElementsMenu() = "MenuItem"
EndProcedure
Procedure Niveau_2()
AddElement(ElementsMenu())
ElementsMenu() = "OpenSubMenu"
AddElement(ElementsMenu())
ElementsMenu() = "MenuItem"
EndProcedure
Procedure Niveau_3()
EndProcedure
Procedure Niveau_4()
EndProcedure
Procedure Entrer_Element_Menu()
EndProcedure
Procedure Icone()
EndProcedure
Procedure Enumerer_Element()
EndProcedure
;gestion des cases à cocher
Procedure Alt()
If GetGadgetState(#Chk_Alt) = 1
SetGadgetState(#Chk_Ctrl, 0)
SetGadgetState(#Chk_Shift, 0)
EndIf
EndProcedure
Procedure Ctrl()
If GetGadgetState(#Chk_Ctrl) = 1
SetGadgetState(#Chk_Alt, 0)
SetGadgetState(#Chk_Shift, 0)
EndIf
EndProcedure
Procedure Shift()
If GetGadgetState(#Chk_Shift) = 1
SetGadgetState(#Chk_Ctrl, 0)
SetGadgetState(#Chk_Alt, 0)
EndIf
EndProcedure
Procedure Ajouter_Raccourci()
If GetGadgetState(#Chk_Alt) = 0 And GetGadgetState(#Chk_Ctrl) = 0 And GetGadgetState(#Chk_Shift) = 0
Debug "#PB_Shortcut_" + GetGadgetText(#Cmb_Raccourcis)
ElseIf GetGadgetState(#Chk_Alt)
Debug "Alt + #PB_Shortcut_" + GetGadgetText(#Cmb_Raccourcis)
ElseIf GetGadgetState(#Chk_Ctrl)
Debug "Ctrl + #PB_Shortcut_" + GetGadgetText(#Cmb_Raccourcis)
ElseIf GetGadgetState(#Chk_Shift)
Debug "Shift + #PB_Shortcut_" + GetGadgetText(#Cmb_Raccourcis)
EndIf
EndProcedure
Procedure OpenWindow_Fenetre_Menu()
If OpenWindow(#Fenetre_Menu, 447, 196, 530, 400, "Generateur de Menu", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
TextGadget(#Txt_Test, 5, 0, 70, 20, "Test >")
EditorGadget(#Edt, 10, 20, 510, 240)
TextGadget(#Txt_Texte, 5, 265, 35, 20, "Texte :")
TextGadget(#Txt_Icone, 5, 315, 40, 20, "Icone :")
TextGadget(#Txt_Enum, 5, 340, 40, 20, "Enum :")
ButtonGadget(#Btn_Titre, 5, 290, 40, 20, "Titre")
ButtonGadget(#Btn_Niv_1, 49, 290, 50, 20, "Niveau 1")
ButtonGadget(#Btn_Niv_2, 104, 290, 50, 20, "Niveau 2")
ButtonGadget(#Btn_Niv_3, 159, 290, 50, 20, "Niveau 3")
ButtonGadget(#Btn_Niv_4, 214, 290, 50, 20, "Niveau 4")
StringGadget(#Str_Element_Menu, 50, 265, 215, 20, "")
StringGadget(#Str_Icone, 50, 315, 215, 20, "", #PB_String_ReadOnly)
StringGadget(#Str_Enum, 50, 340, 215, 20, "")
ButtonGadget(#Btn_Separateur, 269, 265, 60, 20, "Separateur")
ButtonGadget(#Btn_Remplacer, 335, 265, 60, 20, "Remplacer")
ButtonGadget(#Btn_Inserer, 400, 265, 60, 20, "Inserer")
ButtonGadget(#Btn_Ajouter, 465, 265, 60, 20, "Ajouter")
ButtonGadget(#Btn_Vider, 269, 290, 60, 20, "Vider")
ButtonGadget(#Btn_Supprimer, 400, 290, 125, 20, "Supprimer")
ButtonGadget(#Btn_Icone_plus, 269, 315, 20, 20, "+")
ButtonGadget(#Btn_Valider_Element_Menu, 269, 340, 20, 20, Chr($F12E))
ButtonGadget(#Btn_Icone_Moins, 294, 315, 20, 20, "-")
ButtonGadget(#Btn_Monter_Menu, 335, 290, 25, 20, Chr($F062))
ButtonGadget(#Btn_Descendre_Menu, 370, 290, 25, 20, Chr($F063))
TextGadget(#Txt_Raccourci, 335, 315, 65, 20, "Raccourci :")
ComboBoxGadget(#Cmb_Raccourcis, 400, 315, 125, 20)
CheckBoxGadget(#Chk_Alt, 335, 340, 65, 20, "Alt")
CheckBoxGadget(#Chk_Ctrl, 405, 340, 65, 20, "Ctrl")
CheckBoxGadget(#Chk_Shift, 475, 340, 65, 20, "Shift")
ButtonGadget(#Btn_Annuler, 130, 370, 130, 20, "Annuler")
ButtonGadget(#Btn_Ok, 280, 370, 130, 20, "Menu termine")
;Remplir le combo
Read.s Touche.s
Restore raccourcis
i = 0
While Touche <> "Fin"
AddGadgetItem(#Cmb_Raccourcis, - 1, Touche)
Read.s Touche.s
i+1
Wend
CreateMenu(0,WindowID(#Fenetre_Menu))
;Polices
SetGadgetFont(#Btn_Monter_Menu, FontID(#Police))
SetGadgetFont(#Btn_Descendre_Menu, FontID(#Police))
SetGadgetFont(#Btn_Valider_Element_Menu, FontID(#Police))
;Gestion des événements
BindEvent(#PB_Event_CloseWindow, @Fermer_Fenetre_principale(), #Fenetre_Menu)
BindGadgetEvent(#Btn_Separateur, @Separateur())
BindGadgetEvent(#Btn_Remplacer, @Remplacer())
BindGadgetEvent(#Btn_Inserer, @Inserer())
BindGadgetEvent(#Btn_Ajouter, @Ajouter())
BindGadgetEvent(#Btn_Vider, @Vider())
BindGadgetEvent(#Btn_Supprimer, @Supprimer())
BindGadgetEvent(#Btn_Icone_plus, @Icone_plus())
BindGadgetEvent(#Btn_Icone_Moins, @Icone_moins())
BindGadgetEvent(#Btn_Valider_Element_Menu, @Valider_Element_Menu())
BindGadgetEvent(#Btn_Monter_Menu, @Monter_menu())
BindGadgetEvent(#Btn_Descendre_Menu, @Descendre_menu())
BindGadgetEvent(#Btn_Annuler, @Fermer_Fenetre_principale())
BindGadgetEvent(#Btn_Ok, @Sauvegarder())
BindGadgetEvent(#Btn_Titre, @Titre())
BindGadgetEvent(#Btn_Niv_1, @Niveau_1())
BindGadgetEvent(#Btn_Niv_2, @Niveau_2())
BindGadgetEvent(#Btn_Niv_3, @Niveau_3())
BindGadgetEvent(#Btn_Niv_4, @Niveau_4())
BindGadgetEvent(#Str_Element_Menu, @Entrer_Element_Menu())
BindGadgetEvent(#Str_Icone, @Icone())
BindGadgetEvent(#Str_Enum, @Enumerer_Element())
BindGadgetEvent(#Cmb_Raccourcis, @Ajouter_Raccourci())
BindGadgetEvent(#Chk_Alt, @Alt())
BindGadgetEvent(#Chk_Ctrl, @Ctrl())
BindGadgetEvent(#Chk_Shift, @Shift())
EndIf
EndProcedure
OpenWindow_Fenetre_Menu()
;{- Event loop
Repeat
Evenement = WaitWindowEvent()
ForEver
;
;}
DataSection
Raccourcis:
Data.s "Back",
"Tab",
"Clear",
"Return",
"Pause",
"Print",
"Capital",
"Escape",
"Space",
"PageUp",
"PageDown",
"End",
"Home",
"Left",
"Up",
"Right",
"Down",
"Select",
"Execute",
"Snapshot",
"Insert",
"Delete",
"Help",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"LeftWindows",
"RightWindows",
"Apps",
"Pad0",
"Pad1",
"Pad2",
"Pad3",
"Pad4",
"Pad5",
"Pad6",
"Pad7",
"Pad8",
"Pad9",
"Multiply",
"Add",
"Separator",
"Subtract",
"Decimal",
"Divide",
"F1",
"F2",
"F3",
"F4",
"F5",
"F6",
"F7",
"F8",
"F9",
"F10",
"F11",
"F12",
"F13",
"F14",
"F15",
"F16",
"F17",
"F18",
"F19",
"F20",
"F21",
"F22",
"F23",
"F24",
"Numlock",
"Scroll",
"Fin"
EndDataSection