besoin d'aide svp svp

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

besoin d'aide svp svp

Message par jbernard13 »

bonjour a tous

voila je voudrais savoir comment je peux programmer le bouton quitter
pour que l'utilisateur quitte de le programme

Code : Tout sélectionner

Enumeration 
  #Window_0 
  #Window_1 
EndEnumeration 


Enumeration 
  #MenuBar_0 
EndEnumeration 

Enumeration 
  #MENU_1 
EndEnumeration 
Enumeration
#Button_Quitter
EndEnumeration

Enumeration 
  #Button_0 
  #Text_0 
EndEnumeration 


Procedure Open_Window_0() 
  If OpenWindow(#Window_0, 257, 162, 602, 302, #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Test") 
   If CreateGadgetList(WindowID())
 ButtonGadget(#Button_Quitter, 230, 210, 120, 50, "Quitter")
    If CreateMenu(#MenuBar_0, WindowID()) 
      MenuTitle("?") 
      MenuItem(#MENU_1, "A propos") 
    

   EndIf
    EndIf 
  EndIf 
EndProcedure 


Procedure Open_Window_1() 
  If OpenWindow(#Window_1, 295, 192, 251, 216, #PB_Window_SystemMenu | #PB_Window_TitleBar, "A propos") 
    If CreateGadgetList(WindowID()) 
      ButtonGadget(#Button_0, 190, 180, 50, 30, "OK", #PB_Button_Default) 
      TextGadget(#Text_0, 110, 50, 60, 20, "PureBasic!") 
      
      Repeat 
        
        Event = WaitWindowEvent() 
        
        Select Event 
          Case #PB_EventCloseWindow 
            Fenetre = EventWindowID() 
            If fenetre = #Window_1  
              Fermer_Window_1 = 1 ;s 
            EndIf 
            
          Case #PB_EventGadget 
            GadgetID = EventGadgetID() 
            If GadgetID = #Button_0 
              Fermer_Window_1 = 1 
            EndIf 
        EndSelect 
        
      Until Fermer_Window_1 = 1 
      
      CloseWindow(#Window_1) 
    EndIf 
  EndIf 
EndProcedure 

Open_Window_0() 


Repeat 
  
  Event = WaitWindowEvent() 
  Select Event 
    Case #PB_EventMenu 
      MenuID = EventMenuID() 
      If MenuID = #MENU_1 
        Open_Window_1() 
      EndIf 
      
    Case #PB_EventCloseWindow 
      Fenetre = EventWindowID() 
      If fenetre = #Window_0 
        Fermer_Window_0 = 1 
      EndIf 
  EndSelect 
Until Fermer_Window_0 = 1 



End 



merci de m'aider
Jbernard13
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Pour que la fenêtre se ferme et donc que l'on quitte le programme, il faut que la boucle

Code : Tout sélectionner

Repeat 

  Event = WaitWindowEvent() 
  Select Event 
    Case #PB_EventMenu 
      MenuID = EventMenuID() 
      If MenuID = #MENU_1 
        Open_Window_1() 
      EndIf 
      
    Case #PB_EventCloseWindow 
      Fenetre = EventWindowID() 
      If fenetre = #Window_0 
        Fermer_Window_0 = 1 
      EndIf 
  EndSelect 
  
Until Fermer_Window_0 = 1 
appelé boucle d'événement se termine c'est à dire qu'il faut remplir la ou les conditions qui vont faire que cette boucle ne reboucle plus. Si on ne reboucle plus, le programme passe à la ligne suivante et on tombe sur un end qui signifie que le programme est terminé, Purebasic va fermer la fenêtre (ici pas besoin de closewindow puisque c'est la fin du programme)

Je reprend.

La boucle se termine lorsque Until Fermer_Window_0 = 1 c'est à dire que lorsque la variable Fermer_Window_0 passerra à 1. Purebasic met automatiquement toutes les variables à 0 au début du programme ou au début de chaque procédure.

Dans ton code la variable vaut 0 raison pour laquelle la condition de sortie de boucle n'est pas remplie.

Si tu veux fermer la fenêtre avec le bouton, il faut dans ta boucle tester l'état du bouton et s'il est activé, tu met la variable Fermer_Window_0 à 1

Ce qui donne comme code complet

Code : Tout sélectionner

Enumeration
  #Window_0
  #Window_1
EndEnumeration


Enumeration
  #MenuBar_0
EndEnumeration

Enumeration
  #MENU_1
EndEnumeration
Enumeration
  #Button_Quitter
EndEnumeration

Enumeration
  #Button_0
  #Text_0
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 257, 162, 602, 302, #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Test")
    If CreateGadgetList(WindowID())
      ButtonGadget(#Button_Quitter, 230, 210, 120, 50, "Quitter")
      If CreateMenu(#MenuBar_0, WindowID())
        MenuTitle("?")
        MenuItem(#MENU_1, "A propos")
        
        
      EndIf
    EndIf
  EndIf
EndProcedure


Procedure Open_Window_1()
  If OpenWindow(#Window_1, 295, 192, 251, 216, #PB_Window_SystemMenu | #PB_Window_TitleBar, "A propos")
    If CreateGadgetList(WindowID())
      ButtonGadget(#Button_0, 190, 180, 50, 30, "OK", #PB_Button_Default)
      TextGadget(#Text_0, 110, 50, 60, 20, "PureBasic!")
      
      Repeat
        
        Event = WaitWindowEvent()
        
        Select Event
          Case #PB_EventCloseWindow
            Fenetre = EventWindowID()
            If fenetre = #Window_1
              Fermer_Window_1 = 1 ; s
            EndIf
            
          Case #PB_EventGadget
            GadgetID = EventGadgetID()
            If GadgetID = #Button_0
              Fermer_Window_1 = 1
            EndIf
        EndSelect
        
      Until Fermer_Window_1 = 1
      
      CloseWindow(#Window_1)
    EndIf
  EndIf
EndProcedure

Open_Window_0()


Repeat
  
  Event = WaitWindowEvent()
  Select Event
    Case #PB_EventMenu ; ca c'est pour les menu
      MenuID = EventMenuID()
      If MenuID = #MENU_1
        Open_Window_1()
      EndIf
      
    Case #PB_EventCloseWindow ; ca on test la croix rouge en haut à droite ou l'appui sur ALT F4
      Fenetre = EventWindowID()
      If fenetre = #Window_0
        Fermer_Window_0 = 1
      EndIf
      
    Case #PB_EventGadget ; #PB_EventGadget permet de ne sélectionner ici que les événements
      ; qui ont lieu sur un gadget et le bouton en est un, mais à ce stade,
      ; on ne sait pas de quel gadget il s'agit
      
      Select EventGadgetID() ; EventGadgetID() retourne l'identificateur du gadget qui a été
          ; actionné, quel que soit le gadget, il faut donc maintenant tester
          ; si l'identificateur correspond au bouton ;
          ; l'identificateur  = #Button_Quitter
        Case #Button_Quitter ; ici on teste si c'est le bouton quitter
          Fermer_Window_0 = 1 ; si oui, on met Fermer_Window_0 à 1 et c'est tout car
          
      EndSelect ; lorsque le programme va tester cette variable tout de suite après
      
      
  EndSelect
  
Until Fermer_Window_0 = 1

End
et utilise l'utilitaire du soldat inconnu pour arranger ton code, tu le trouvera sur son site
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Tu devrais aussi regarder les tutos de la rubrique débutant

Tutos sur les gadgets etc
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci denis
je voulais juste savoir quand on a un menu et un bouton et comme ecrire le code
je commence a comprendre



merci denis et aux pro de purebasic
Jbernard13
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Dans ton précédent post, tu exposais le même problème:

http://purebasic.hmt-forum.com/viewtopic.php?t=1566


N'utilise pas plusieurs file de post pour le même problème!

Dans le titre de tes posts, évite de mettre "besoin d'aide svp svp" mais dans le cas présent "Comment fermer une fenêtre"; expose dans le titre ton problème, on se doute bien que t'as besoin d'aide!
Répondre