Question sur le Form Designer intégré

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
the8bitgen
Messages : 3
Inscription : ven. 03/juil./2020 15:37

Question sur le Form Designer intégré

Message 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
Avatar de l’utilisateur
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

Re: Question sur le Form Designer intégré

Message 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
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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Question sur le Form Designer intégré

Message 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
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%
the8bitgen
Messages : 3
Inscription : ven. 03/juil./2020 15:37

Re: Question sur le Form Designer intégré

Message 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.
the8bitgen
Messages : 3
Inscription : ven. 03/juil./2020 15:37

Re: Question sur le Form Designer intégré

Message par the8bitgen »

Il faut aussi dire que ça marche avec la fonction BindMenuEvent()
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Question sur le Form Designer intégré

Message 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 ) :wink:

A bientôt.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre