Fenetre fille et petite fille

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
cirederff
Messages : 54
Inscription : ven. 15/mai/2009 19:57

Fenetre fille et petite fille

Message par cirederff »

Bonjour.

J'ai un problème avec les fenêtres petite fille et je ne trouve pas ma réponse sur le forum :?

Autant les fenêtres filles ne me posent pas de problème (tout du moins je pense :!: )

je n'arrive pas à fermer ma fenêtre petite fille et quand je suis dans la fenêtre petite fille ( pas d'allusions hein, quand je répète petite fille plusieurs fois :roll: )et si je donne le focus à la fenêtre fille je peux fermer petite fille avec le bouton quitter fille :?

Ai'je été asser clair :?:

Code : Tout sélectionner

;********PURE 4.31****************
;*********FRED*********************
Declare  fenetre_fille()
Declare  fenetre_petite_fille()


Enumeration

#fenetre
#fenetre_fille
#bouton_quitter_fille
#bouton_vers_petite_fille
#bouton_vers_fille
#fenetre_petite_fille
#bouton_quitter3
#fenetre_largeur = 1024
#fenetre_hauteur = 600
EndEnumeration






OpenWindow(#fenetre ,0,0,#fenetre_largeur ,#fenetre_hauteur ,"GUIDAGE",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget| #PB_Window_MaximizeGadget)
Fenetre_une = WindowID(#fenetre )
couleur = RGB(0,150,0) ;on met la fenetre en bleu foncé
SetWindowColor(#fenetre,couleur)
ButtonGadget(#bouton_vers_fille, 900, 10, 100, 30, "vers fille" )

Repeat
	Event1 = WaitWindowEvent() 
	
	If Event1 = #PB_Event_Gadget
		clicgadget = EventGadget() 
	Else
		clicgadget = 0 
	EndIf
	
	
	
	If clicgadget = #bouton_vers_fille 
		fenetre_fille()
		SetActiveWindow(#fenetre)
	EndIf
	
	
	
Until Event1=#PB_Event_CloseWindow ;si on appuie sur la croix on quitte le programme.

CloseWindow(#fenetre)










; **************** zone des procedures ********************************

Procedure fenetre_fille() 
	OpenWindow(#fenetre_fille ,0,0,#fenetre_largeur ,#fenetre_hauteur ,"fenetre2" ,#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget| #PB_Window_MaximizeGadget)
	StickyWindow(#fenetre_fille,1)
	ButtonGadget(#bouton_quitter_fille, 10,  500, 200, 20, "quiter fille")
	ButtonGadget(#bouton_vers_petite_fille, 10,  400, 200, 20, "vers petite fille")
	
	Repeat
		Event2= WaitWindowEvent() 
		
		If Event2 = #PB_Event_Gadget 
			clicgadget = EventGadget() 
		Else
			clicgadget = 0 
		EndIf
		
		
		
		If clicgadget = #bouton_vers_petite_fille 
			fenetre_petite_fille()
			;SetActiveWindow(#bouton_vers_petite_fille )
		EndIf
		
		
		
		If clicgadget = #bouton_quitter_fille   
			CloseWindow(#fenetre_fille)  
			Event2=#PB_Event_CloseWindow 
		EndIf
	
	Until Event2=#PB_Event_CloseWindow
	
EndProcedure





Procedure fenetre_petite_fille()


	OpenWindow(#fenetre_petite_fille ,0,0,#fenetre_largeur ,#fenetre_hauteur ,"fenetre2" ,#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget| #PB_Window_MaximizeGadget)
	StickyWindow(#fenetre_petite_fille,1)
	ButtonGadget(#bouton_quitter3, 100,  500, 200, 20, "quiter")
		
	Repeat
	
	
	
		Event3 = WaitWindowEvent() 
		
		If Event3 = #PB_Event_Gadget 
			clicgadget = EventGadget() 
		Else
			clicgadget = 0 
		EndIf
		
		
		
		If clicgadget = 2   
			CloseWindow(#fenetre_petite_fille) 
		 	Event3=#PB_Event_CloseWindow  
		EndIf
		
		
	Until Event3=#PB_Event_CloseWindow 
		
EndProcedure
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Message par kernadec »

bonjour
voila voila

cordialement

Code : Tout sélectionner

;********PURE 4.31**************** 
;*********FRED********************* 

Enumeration 
 
#fenetre 
#fenetre_fille 
#fenetre_petite_fille 
#bouton_vers_fille
#bouton_vers_petite_fille 
#bouton_quitter_fille 
#bouton_quitter3 
#fenetre_largeur = 1024 
#fenetre_hauteur = 600 
EndEnumeration 


Procedure fenetre_petite_fille() 
 
 
    OpenWindow(#fenetre_petite_fille ,0,0,#fenetre_largeur ,#fenetre_hauteur ,"fenetre2" ,#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget| #PB_Window_MaximizeGadget) 
    StickyWindow(#fenetre_petite_fille,1) 
    ButtonGadget(#bouton_quitter3, 100,  500, 200, 20, "quitter") 
         
    Repeat 
     Event3 = WaitWindowEvent() 
     If Event3 = #PB_Event_Gadget

        Select EventGadget()
           Case  #bouton_quitter3
 
            CloseWindow(#fenetre_petite_fille)  
           
          
           Break
          EndSelect
       
       EndIf 
      ForEver 
         
   
         
EndProcedure


 Procedure fenetre_fille()   
    OpenWindow(#fenetre_fille ,0,0,#fenetre_largeur ,#fenetre_hauteur ,"fenetre2" ,#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget| #PB_Window_MaximizeGadget) 
    StickyWindow(#fenetre_fille,1) 
    ButtonGadget(#bouton_quitter_fille, 10,  500, 200, 20, "quitter fille") 
    ButtonGadget(#bouton_vers_petite_fille, 10,  400, 200, 20, "vers petite fille") 
  
    Repeat 
        Event2= WaitWindowEvent()  
         
        If Event2 = #PB_Event_Gadget  
          Select EventGadget()

           Case #bouton_vers_petite_fille  
            fenetre_petite_fille() 
            ;SetActiveWindow(#bouton_vers_petite_fille ) 
           Case #bouton_quitter_fille   
            CloseWindow(#fenetre_fille)   
            ; 
            Break
         EndSelect
       EndIf
     ForEver 
     
EndProcedure 
 
OpenWindow(#fenetre ,0,0,#fenetre_largeur ,#fenetre_hauteur ,"GUIDAGE",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget| #PB_Window_MaximizeGadget) 
Fenetre_une = WindowID(#fenetre ) 
couleur = RGB(0,150,0) ;on met la fenetre en bleu foncé 
SetWindowColor(#fenetre,couleur) 
ButtonGadget(#fenetre_fille, 900, 10, 100, 30, "vers fille" ) 

Repeat 
    Event1 = WaitWindowEvent()  
     
      If Event1 = #PB_Event_Gadget

        Select EventGadget()
        
          Case #fenetre_fille
              fenetre_fille() 
         ;    SetActiveWindow(#fenetre) 
         ;    clicgadget = EventGadget()  
           Case #PB_Event_CloseWindow
             CloseWindow(#fenetre) 
            break
          EndSelect
       EndIf 
Until event1=#PB_Event_CloseWindow
End    
   
  
 
;**************** zone des procedures ******************************** 
 
Dernière modification par kernadec le mer. 24/juin/2009 20:54, modifié 1 fois.
cirederff
Messages : 54
Inscription : ven. 15/mai/2009 19:57

Message par cirederff »

Merci pour la réponse mais tu ne peux pas faire deux fois la manip :?
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Message par kernadec »

voila voila
corrigé
le code précédent a été mis a jour.
je doit dire que ce n'est qu'un enchainement de fenêtres,
et pas du tout une fenêtre parent enfant
car dans ce cas tu aurais du avoir des fenêtres filles à l'interieur de la fenêtre parent.

bonne soirée
Dernière modification par kernadec le mer. 24/juin/2009 21:06, modifié 1 fois.
cirederff
Messages : 54
Inscription : ven. 15/mai/2009 19:57

Message par cirederff »

Merci, je m'en vais étudier ça :wink:
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Message par Geo Trouvpatou »

Salut.

Voici une autre façon de faire avec une seule boucle Repeat...Until
Le code a certainement été donné par une personne de ce forum.

Code : Tout sélectionner

Enumeration
  #Main
  #Fenetre1
  #Fenetre2
  #Fenetre3
  #Fenetre4
  #Fenetre5
EndEnumeration

Enumeration
  #Bouton1
  #Bouton2
  #Bouton3
  #Bouton4
  #Bouton5
  #BoutonFenetre1
  #BoutonFenetre2
  #BoutonFenetre3
  #BoutonFenetre4
  #BoutonFenetre5
  #Text
EndEnumeration

Procedure OpenWin_Main()
  If OpenWindow(#Main, 0, 0, 220, 200, "Fenetres", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(0))
      ButtonGadget(#Bouton1, 10,  10, 200, 20, "Ouvrir fenêtre 1")
      ButtonGadget(#Bouton2, 10,  40, 200, 20, "Ouvrir fenêtre 2")
      ButtonGadget(#Bouton3, 10,  70, 200, 20, "Ouvrir fenêtre 3")
      ButtonGadget(#Bouton4, 10, 100, 200, 20, "Ouvrir fenêtre 4")
      ButtonGadget(#Bouton5, 10, 130, 200, 20, "Ouvrir fenêtre 5")
      TextGadget(#Text, 10, 180, 200, 20, "Pas de fenêtre ouverte", #PB_Text_Center)
    EndIf
  EndIf
EndProcedure

Procedure OpenWin_1()
  If OpenWindow(#Fenetre1, 0, 0, 220, 40, "Fenetre 1", #PB_Window_SystemMenu, WindowID(#Main))
    If CreateGadgetList(WindowID(#Fenetre1))
      ButtonGadget(#BoutonFenetre1, 10,  10, 200, 20, "Fermer fenêtre 1")
     
      ProcedureReturn #True
    EndIf
  EndIf
EndProcedure

Procedure OpenWin_2()
  If OpenWindow(#Fenetre2, 0, 70, 220, 40, "Fenetre 2", #PB_Window_SystemMenu, WindowID(#Main))
    If CreateGadgetList(WindowID(#Fenetre2))
      ButtonGadget(#BoutonFenetre2, 10,  10, 200, 20, "Fermer fenêtre 2")
     
      ProcedureReturn #True
    EndIf
  EndIf
EndProcedure

Procedure OpenWin_3()
  If OpenWindow(#Fenetre3, 0, 140, 220, 40, "Fenetre 3", #PB_Window_SystemMenu, WindowID(#Main))
    If CreateGadgetList(WindowID(#Fenetre3))
      ButtonGadget(#BoutonFenetre3, 10,  10, 200, 20, "Fermer fenêtre 3")
     
      ProcedureReturn #True
    EndIf
  EndIf
EndProcedure

Procedure OpenWin_4()
  If OpenWindow(#Fenetre4, 0, 210, 220, 40, "Fenetre 4", #PB_Window_SystemMenu, WindowID(#Main))
    If CreateGadgetList(WindowID(#Fenetre4))
      ButtonGadget(#BoutonFenetre4, 10,  10, 200, 20, "Fermer fenêtre 4")
     
      ProcedureReturn #True
    EndIf
  EndIf
EndProcedure

Procedure OpenWin_5()
  If OpenWindow(#Fenetre5, 0, 280, 220, 40, "Fenetre 5", #PB_Window_SystemMenu, WindowID(#Main))
    If CreateGadgetList(WindowID(#Fenetre5))
      ButtonGadget(#BoutonFenetre5, 10,  10, 200, 20, "Fermer fenêtre 5")
     
      ProcedureReturn #True
    EndIf
  EndIf
EndProcedure

OpenWin_Main()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        ;/ Ouverture des fenêtres "fille"
        Case #Bouton1
          If OpenWin_1()
            SetGadgetText(#Text, "Vous avez ouvert la fenêtre 1")
          EndIf
         
        Case #Bouton2
          If OpenWin_2()
            SetGadgetText(#Text, "Vous avez ouvert la fenêtre 2")
          EndIf
         
        Case #Bouton3
          If OpenWin_3()
            SetGadgetText(#Text, "Vous avez ouvert la fenêtre 3")
          EndIf
         
        Case #Bouton4
          If OpenWin_4()
            SetGadgetText(#Text, "Vous avez ouvert la fenêtre 4")
          EndIf
         
        Case #Bouton5
          If OpenWin_5()
            SetGadgetText(#Text, "Vous avez ouvert la fenêtre 5")
          EndIf
         
          ;/ Femeture des fenêtres "fille" par le bouton
        Case #BoutonFenetre1
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 1")
          CloseWindow(#Fenetre1)
         
        Case #BoutonFenetre2
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 2")
          CloseWindow(#Fenetre2)
         
        Case #BoutonFenetre3
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 3")
          CloseWindow(#Fenetre3)
         
        Case #BoutonFenetre4
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 4")
          CloseWindow(#Fenetre4)
         
        Case #BoutonFenetre5
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 5")
          CloseWindow(#Fenetre5)
         
         
      EndSelect
     
    Case #PB_Event_CloseWindow
      Select EventWindow()
        ;/ Fermeture des fenêtres "fille" par l'icône [X]
        Case #Fenetre1
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 1")
          CloseWindow(#Fenetre1)
         
        Case #Fenetre2
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 2")
          CloseWindow(#Fenetre2)
         
        Case #Fenetre3
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 3")
          CloseWindow(#Fenetre3)
         
        Case #Fenetre4
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 4")
          CloseWindow(#Fenetre4)
         
        Case #Fenetre5
          SetGadgetText(#Text, "Vous avez fermé la fenêtre 5")
          CloseWindow(#Fenetre5)
         
          ;/ Fermeture de la fenêtre principale (et fin du programme)
        Case #Main
          Quit = #True
         
      EndSelect
  EndSelect
Until Quit
End
D'ailleurs en voyant ça :

Code : Tout sélectionner

;/ Fermeture de la fenêtre principale
Ce doit même être un utilisateur de JaPBe :wink:

Bye.
Répondre