Page 1 sur 1

Problème fermeture fenêtre

Publié : mar. 22/févr./2022 12:28
par Bmld76
Bonjour,

J'ai un problème de sélection de fenêtre que je n'arrive pas à résoudre. je fais appel à la communauté pour m'aider à identifier mes erreurs et je l'en remercie d'avance. Voici le programme qui me pose un soucis. J"ouvre une fenêtre MainWindow dans laquelle j'affiche des "ContenerGadget" superposés de couleur aléatoire. Jusque la tout fonctionne.
Après l'ouverture et la fermeture d'une fenêtre Apropos, la création des "ContenerGadget" plante le programme.
Si je laisse la fenêtre Apropos ouverte, les "ContenerGadget" sont créés dans celle-ci. J'ai donc un problème à la fermeture de la fenêtre Apropos, la création des gadgets ne se redirige pas vers la fenêtre MainWindow. J'ai essayer SetActiveWindow mais c'est uniquement pour le saisies.
Pouvez-vous m'aider à résoudre ce problème.

bien Cordialement

Code : Tout sélectionner

Global MainWindow, Apropos, ContenerGadget

Procedure OuvreContener()  
  R = Random (255,128) ; couleur aleatoire mais clair 
  G = Random (255,128)
  B = Random (255,128)
  couleur =  RGB(R, G, B)
  ContenerGadget = ContainerGadget(#PB_Any, 4, 70, WindowWidth(MainWindow)-8, WindowHeight(MainWindow)-75)
  SetGadgetColor(ContenerGadget, #PB_Gadget_BackColor,couleur)
  CloseGadgetList()
EndProcedure

Procedure OpenApropos()  ; création de la fenetre A propos
  Apropos = OpenWindow(#PB_Any, 100, 100, 220, 200, "A propos...", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget)
  ButtonGadget  (20, 10, 10, 200, 30, "Fermer")
EndProcedure

MainWindow = OpenWindow(#PB_Any, 0, 0, 1000, 600, "ContenerGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(MainWindow, RGB(188,188,188))
CreateMenu(0, WindowID(MainWindow))
MenuItem(#PB_Menu_About, "A prospos") 
ButtonGadget  (1, 50, 10, 200, 30, "Contener")
ButtonGadget  (2, 300, 10, 200, 30, "Fentre Active")
Repeat
    Event = WaitWindowEvent()
  
  Select EventWindow()  ; en fonction de la fenetre , on traite Even 
    Case MainWindow    
      
      Select Event
        Case #PB_Event_CloseWindow
          quit = 1
        Case #PB_Event_Menu
          Select EventMenu()
            Case #PB_Menu_About
              OpenApropos()
          EndSelect   
          
        Case #PB_Event_Gadget
          Select EventGadget()
            Case 1
              OuvreContener()
            Case 2  
              Debug  GetActiveWindow()
          EndSelect
      EndSelect
      
    Case  Apropos
      Select Event  
        Case #PB_Event_CloseWindow
          CloseWindow (Apropos) 
          SetActiveWindow(MainWindow)
      EndSelect
      
      Select EventGadget() ; fermeture avec le bouton
        Case 20
          CloseWindow (Apropos) 
          SetActiveWindow(MainWindow)
      EndSelect       
      
  EndSelect
Until quit = 1



Re: Problème fermeture fenêtre

Publié : mar. 22/févr./2022 14:13
par Marc56
Bonjour,

Si tu utilises plusieurs GagetList, alors il faut spécifier au système laquelle il doit utiliser lorsque tu change de fenêtre.

Code : Tout sélectionner

    Case  Apropos
      Select Event  
        Case #PB_Event_CloseWindow
          CloseWindow (Apropos) 
          SetActiveWindow(MainWindow)
          UseGadgetList(WindowID(MainWindow))    ;  <--- Ajouter ça
      EndSelect
Note que tel que tu as fais ton système, tu créé un nouveau container(ContainerGadget) à chaque fois que tu ouvres la fenêtre « À propos ».
:wink:

Re: Problème fermeture fenêtre

Publié : mar. 22/févr./2022 14:18
par Bmld76
Merci, c'est effectivement l'info qui me manquait.

Bien cordialement

Re: Problème fermeture fenêtre

Publié : mar. 22/févr./2022 14:21
par Bmld76
Pour la création de nouveau container , c'est bien ce dont j'ai besoin, je les superpose et je les utilise avec Show et Hide. merci encore