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
Question sur le Form Designer intégré
-
- Messages : 3
- Inscription : ven. 03/juil./2020 15:37
- Mindphazer
- Messages : 695
- Inscription : mer. 24/août/2005 10:42
Re: Question sur le Form Designer intégré
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)
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
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Question sur le Form Designer intégré
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)
Le code de ta fenêtre devrait ressembler à ça 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.
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)
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.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.
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
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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
-
- Messages : 3
- Inscription : ven. 03/juil./2020 15:37
Re: Question sur le Form Designer intégré
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.
-
- Messages : 3
- Inscription : ven. 03/juil./2020 15:37
Re: Question sur le Form Designer intégré
Il faut aussi dire que ça marche avec la fonction BindMenuEvent()
Re: Question sur le Form Designer intégré
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.
@++
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.
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz