Page 1 sur 1

Utilisation de CloseGadgetList()

Publié : mer. 28/sept./2005 19:30
par Dräc
Un truc que je ne comprends tjrs pas.
Pourquoi le compilo (mode debug) retourne l’erreur "CloseGadgetList() without CreateGadgetList()" dans le cas de figure suivant?

Code : Tout sélectionner

If OpenWindow(0,0,0,320,250,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Frame3DGadget") And CreateGadgetList(WindowID(0))
    Frame3DGadget(0,10, 10,300,50,"Frame3DGadget Standard")
    Frame3DGadget(1,10, 70,300,50,"Frame3DGadget Single",#PB_Frame3D_Single)
    Frame3DGadget(2,10,130,300,50,"Frame3DGadget Double",#PB_Frame3D_Double)
    Frame3DGadget(3,10,190,300,50,"Frame3DGadget Flat",#PB_Frame3D_Flat)
    CloseGadgetList()
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf

Publié : jeu. 29/sept./2005 8:05
par lionel_om
Ca me le fait aussi.
Pour les Window, le closeGadgetList plante le prog.
Par contre ça marche bien pour les PanelGadgets et je ne sais plus quelles autres gadgets...

Publié : jeu. 29/sept./2005 10:24
par Dräc
Ce problème entraîne la situation suivante:

On commencer a mettre des gadgets dans une fenêtre, puis si on ouvrir une deuxième fenêtre contenant aussi des gadgets, les gadgets ajoutés le sont tout naturellement dans la dernier fenêtre, même si on la ferme !
Cela veut dire qu’en ne pouvant pas fermer la gadgetlist de la deuxième fenêtre, on pert le référentiel de la gadgetlist de la première fenêtre.

Pour les mêmes raisons, impossible d’utiliser un opengadgetlist() appliqué à la fenêtre pour spécifier le référentiel!

C’est dommage…

Code : Tout sélectionner

Procedure OpenWnd()
  If OpenWindow(1,220,220,250,105,#PB_Window_SystemMenu,"Fenetre 2")
    ; Now create the gadget-list...
    If CreateGadgetList(WindowID())   ; the gadget-list was sucessfully created
      ; define your gadgets here...
      ButtonGadget(#PB_Any,10,15,230,30,"Test button")
      ;CloseGadgetList()
    Else                               ; the gadget-list couldn't be created
      ; show an error message here, end the program etc...
    EndIf

  EndIf
EndProcedure

  ; Define your window first...
  If OpenWindow(0,200,200,250,105,#PB_Window_SystemMenu,"Create gadgets...")
    ; Now create the gadget-list...
    If CreateGadgetList(WindowID())   ; the gadget-list was sucessfully created
      ; define your gadgets here...
      ButtonGadget(#PB_Any,10,15,230,30,"Test button")
      OpenWnd()
      ButtonGadget(#PB_Any,10,45,230,30,"Test button")
      
    Else                               ; the gadget-list couldn't be created
      ; show an error message here, end the program etc...
    EndIf
    
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf

Publié : ven. 30/sept./2005 12:20
par lionel_om
Non tu peux faire UseGadgetList(WindowId(#Win_1))
:wink:

Publié : ven. 30/sept./2005 12:55
par Dräc
Merci!