Page 1 sur 1
Question sur le Form Designer intégré
Publié : ven. 03/juil./2020 15:52
par the8bitgen
Bonjour à tous,
Je suis tout nouveau, et je voulais savoir comment je fais pour accéder à un iteme dans un menu que j'ai créé avec l'outil Form Designer de PureBasic. Exemple, dans le menu j'ai les options Ouvrir, et Fermer, mais comment je fais par exemple pour fermer la fenêtre du programme quand je clique sur Fermer? Je remarque aussi qu'on n'utilise pas de BindEvent dans le code qui gère la fenêtre également, donc je suis un peu confus.
Merci de me répomdre
Re: Question sur le Form Designer intégré
Publié : ven. 03/juil./2020 17:23
par Mindphazer
Bonjour,
c'est pas dans le Form Designer que tu gères ton menu, c'est dans ton application directement
Voilà un petit exemple inspiré de la doc (très instructive à lire)
Code : Tout sélectionner
If OpenWindow(0, 200, 200, 200, 100, "Exemple de menu")
If CreateMenu(0, WindowID(0))
MenuTitle("Projet")
MenuItem(1, "Ouvrir" +Chr(9)+"Ctrl+O")
MenuItem(2, "Enregistrer" +Chr(9)+"Ctrl+E")
MenuItem(3, "Enregistrer sous"+Chr(9)+"Ctrl+R")
MenuItem(4, "Fermer" +Chr(9)+"Ctrl+F")
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu() ; To see which menu has been selected
Case 1 ; Ouvrir
MessageRequester("Info", "Menu Ouvrir sélectionné", 0)
Case 2 ; Enregistrer
MessageRequester("Info", "Menu Enregistrer sélectionné", 0)
Case 3 ; Enregistrer sous
MessageRequester("Info", "Menu Enregistrer sous sélectionné", 0)
Case 4 ; Fermer
Quit = 1
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
Re: Question sur le Form Designer intégré
Publié : ven. 03/juil./2020 17:55
par falsam
Bienvenu à bord the8bitgen.
Le FormDesigner permet de créer un system de menu. Pour chaque item tu as la possibilité d'indiquer un nom de procédure. Ces procédures devront être créer par toi. (
Personnellement je n'aime pas du tout cette méthode)
the8bitgen a écrit :Je remarque aussi qu'on n'utilise pas de BindEvent dans le code qui gère la fenêtre également, donc je suis un peu confus.
Ouvres les préférences de l'IDE (
Fichier -> Préférence) puis sur l'item Form et désactive procédure d’événements.
Le code de ta fenêtre devrait ressembler à ça
Code : Tout sélectionner
;IncludeFile "ton form.pbf"
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;
Global Window_0
Enumeration FormMenu
#MenuItem_2
#MenuItem_3
EndEnumeration
Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
CreateMenu(0, WindowID(Window_0))
MenuTitle("Fichier")
MenuItem(#MenuItem_2, "Ouvrir")
MenuItem(#MenuItem_3, "Quitter")
EndProcedure
Ensuite à toi de l'inclure dans ton code principale avec la fonction includefile.
Voici le code avec un bind des événements de ta fenêtre.
Code : Tout sélectionner
EnableExplicit
;Sommeaire de l'application
Declare Open()
Declare Exit()
;IncludeFile "ton form.pbf"
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;
Global Window_0
Enumeration FormMenu
#MenuItem_2
#MenuItem_3
EndEnumeration
Procedure OpenWindow_0(x = 0, y = 0, width = 600, height = 400)
Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
CreateMenu(0, WindowID(Window_0))
MenuTitle("Fichier")
MenuItem(#MenuItem_2, "Ouvrir")
MenuItem(#MenuItem_3, "Quitter")
EndProcedure
; Fin du code généré par le générateur de form
; Ce que tu dois faire :
OpenWindow_0()
BindEvent(#PB_Event_Menu, @Open(), Window_0, #MenuItem_2)
BindEvent(#PB_Event_Menu, @Exit(), Window_0, #MenuItem_3)
BindEvent(#PB_Event_CloseWindow, @exit())
Repeat : WaitWindowEvent() : ForEver
Procedure Open()
Debug "Clique sur l'item ouvrir"
EndProcedure
Procedure Exit()
End
EndProcedure
Re: Question sur le Form Designer intégré
Publié : ven. 03/juil./2020 20:12
par the8bitgen
Salut et merci encore pour votre aide, J'ai dù utilisé la bonne vieille méthode de codage à la main, mais je voulais savoir comment procédé, car je n'ai pas encore vu de tuto à ce sujet. Alors tout est bien, merci.
Re: Question sur le Form Designer intégré
Publié : ven. 03/juil./2020 20:16
par the8bitgen
Il faut aussi dire que ça marche avec la fonction BindMenuEvent()
Re: Question sur le Form Designer intégré
Publié : ven. 03/juil./2020 20:39
par venom
Salut the8bitgen,
N’hésite pas a faire F1 quand ton curseur est sur une fonction ça permet d'ouvrir l'aide directement sur cette fonction (qui souvent est accompagner d'un exemple )
A bientôt.
@++