Pour cela, il faudrait utiliser des fonctions internes et non documentées de PB.
Voir ici
viewtopic.php?f=6&t=5258
et là
http://www.purebasic.fr/english/viewtop ... 12&t=64151
Sinon, il faut que tu gère toi même la liste des gadgets du container avec une liste, une map ou un tableau.
De plus, on gére les gadgets du container sans se soucier de la gadgetlist sauf pour le créer. On peut donc changer le texte, la couleur, etc d'un gadget du container, directement, comme n'importe quel gadget.
Exemple:
Code : Tout sélectionner
Global NewList ContainerListGadget.i()
Procedure EventBouton3()
Debug "Bouton 3"
Debug GadgetID(3)
EndProcedure
If OpenWindow(0, 0, 0, 372, 150, "ContainerGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ContainerGadget(0, 8, 8, 356, 133, #PB_Container_Raised)
ButtonGadget(1, 10, 15, 100, 24, "Supprimer Bouton 3")
ButtonGadget(2, 120, 15, 100, 24, "Créer Bouton 3")
ButtonGadget(3, 230, 15, 80, 24, "Bouton 3")
ButtonGadget(4, 10, 50, 100,24, "Renommer Bouton 3")
ButtonGadget(5, 120, 50, 100, 24, "Liste Cont-Gadget")
CloseGadgetList()
BindGadgetEvent(3,@EventBouton3())
;Gerer liste gadget du container
AddElement(ContainerListGadget())
ContainerListGadget() = GadgetID(1)
AddElement(ContainerListGadget())
ContainerListGadget() = GadgetID(2)
AddElement(ContainerListGadget())
ContainerListGadget() = GadgetID(3)
AddElement(ContainerListGadget())
ContainerListGadget() = GadgetID(4)
AddElement(ContainerListGadget())
ContainerListGadget() = GadgetID(5)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ;Supprimer Bouton 3
If IsGadget(3) <> 0
UnbindGadgetEvent(3, @EventBouton3())
FreeGadget(3)
SelectElement(ContainerListGadget(), 3-1)
ContainerListGadget() = -1
EndIf
Case 2 ;Créer Bouton 3
If IsGadget(3) = 0
OpenGadgetList(0)
ButtonGadget(3, 230, 15, 80, 24, "Bouton 3")
BindGadgetEvent(3, @EventBouton3())
SelectElement(ContainerListGadget(), 3-1)
ContainerListGadget() = GadgetID(3)
EndIf
Case 4 ;Renommer Bouton 3
If IsGadget(3) <> 0
If GetGadgetText(3) = "OK"
SetGadgetText(3, "Bouton 3")
Else
SetGadgetText(3, "OK")
EndIf
ResizeGadget(3,#PB_Ignore ,#PB_Ignore ,GadgetWidth(3, #PB_Gadget_RequiredSize),#PB_Ignore )
EndIf
Case 5 ; Afficher liste
i=1
ForEach ContainerListGadget()
tmp=ContainerListGadget()
Debug "Gadget "+ Str(i) + " ID="+Str(tmp)
If tmp <> -1
type = GadgetType(i)
Select type
Case #PB_GadgetType_Button
Debug "C'est un bouton: Button"
EndSelect
EndIf
i=i+1
Next
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
M.