Utilisation de CloseGadgetList()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Utilisation de CloseGadgetList()

Message 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
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message 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...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message 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
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Non tu peux faire UseGadgetList(WindowId(#Win_1))
:wink:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Dräc
Messages : 526
Inscription : dim. 29/août/2004 0:45

Message par Dräc »

Merci!
Répondre