je sais pas si j'ai loupé quelque chose,
mais j'ai pas trouvé de fonction pour accéder à la liste des gadgets d'un container
(afin de les modifier, les supprimer ...)
ça me manque cruellement
gadget : pouvoir acceder à la gadgetlist d'un container
Re: gadget : pouvoir acceder à la gadgetlist d'un container
Tout container va créer une GadgetList, donc UseGadgetList()
C'est vrai que cette fonction n'est pas indiquée dans ContainerGadget()
(double emploi avec OpenGadgetList() ? )
C'est vrai que cette fonction n'est pas indiquée dans ContainerGadget()
(double emploi avec OpenGadgetList() ? )
Re: gadget : pouvoir acceder à la gadgetlist d'un container
non
UseGadgetList() et OpenGadgetList() permettent de selectionner le container (ou fenetre) dans lequel on va ajouter des gadgets
moi ce que je veux c'est la liste des identifiants des gadgets contenu afin de les modifier, les supprimer ...
UseGadgetList() et OpenGadgetList() permettent de selectionner le container (ou fenetre) dans lequel on va ajouter des gadgets
moi ce que je veux c'est la liste des identifiants des gadgets contenu afin de les modifier, les supprimer ...
Re: gadget : pouvoir acceder à la gadgetlist d'un container
OK.
Pour ceux qui créent l'interface en manuel, je ne sais pas.
Pour ceux qui utilisent le FD interne, les objets sont hiérarchisés dans le deuxième onglet (Objets).
(Container, TabGadget etc)
On ne peut pas les supprimer depuis cette liste, ni les déplacer, mais on peut les faire apparaitre au premier plan une fois sélectionné et alors les supprimer.
Pour ceux qui créent l'interface en manuel, je ne sais pas.
Pour ceux qui utilisent le FD interne, les objets sont hiérarchisés dans le deuxième onglet (Objets).
(Container, TabGadget etc)
On ne peut pas les supprimer depuis cette liste, ni les déplacer, mais on peut les faire apparaitre au premier plan une fois sélectionné et alors les supprimer.
Re: gadget : pouvoir acceder à la gadgetlist d'un container
Guillot a écrit :je sais pas si j'ai loupé quelque chose,
mais j'ai pas trouvé de fonction pour accéder à la liste des gadgets d'un container
(afin de les modifier, les supprimer ...)
ça me manque cruellement
je ne comprends pas trop ta question
en principe, lorsque tu creer un gadget, tu indiques un id , soit par un numero directement, (c'est le cas pour la majorité des exemples de la doc, et je le deplore !! )
soit par l'utilisation d'une constante par exemple : (et tel que les exemples de la doc devraient etre )
Code : Tout sélectionner
Enumeration
#Win
#Container
#bouton1
#bouton2
EndEnumeration
If OpenWindow(#Win , 0, 0, 322, 150, "ContainerGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ContainerGadget(#Container, 8, 8, 306, 133, #PB_Container_Raised)
ButtonGadget(#bouton1, 10, 15, 80, 24, "Bouton 1")
ButtonGadget(#bouton2, 95, 15, 80, 24, "Bouton 2")
CloseGadgetList()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
comme tu le vois, dans cette exemple les gadgets qu'ils soient dans un container ou pas, sont accessibles par leur numero d'ID (ici la constante )
, il existe aussi la possibilité d'utiliser une variable ou un tableau a la place de constantes : en utilisant #Pb_Any exemple :
Code : Tout sélectionner
Enumeration
#Win
EndEnumeration
If OpenWindow(#Win , 0, 0, 322, 150, "ContainerGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
container=ContainerGadget(#pb_Any, 8, 8, 306, 133, #PB_Container_Raised)
bouton1=ButtonGadget(#pb_Any, 10, 15, 80, 24, "Bouton 1") ;>2
bouton2=ButtonGadget(#pb_Any, 95, 15, 80, 24, "Bouton 2") ;>2
CloseGadgetList()
debug "ID container ="+str(container)
debug "ID bouton1 ="+str(bouton1)
debug "ID bouton2 ="+str(bouton2)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
; Epb
mais quoiqu'il en soit, on a toujours acces a l'id de chaque gadget, qu'ils soient dans ou hors un container
le container n'est qu'un gadget comme un autre .... on accede a chacun des gadgets qu'il englobe, par le numero , ou numero d'identification (ID) de chaque gadget
Dernière modification par Zorro le jeu. 29/juin/2017 11:42, modifié 1 fois.
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: gadget : pouvoir acceder à la gadgetlist d'un container
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:
M.
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
Re: gadget : pouvoir acceder à la gadgetlist d'un container
à zorro:
bravo pour tes textes colorés (j'imagine que tu t'es fais un utilitaire pour ça)
merci pour tes explication, mais je connais tous ça
moi ce que je veux c'est la liste des identifiants des gadgets contenu dans un container afin de les modifier, les supprimer ...
à mesa:
tes liens semblent répondre à ma demande
(mais les derniers commentaires du 1er me motivent pas trop (de plus il date de 2006) et pour le 2eme, j'ai une constante introuvable (#Mac_Event_UpdateWindowList))
pour mes besoin immediat, je vais me gerer cette liste moi même
mais c'est un sacrée boulot si on veut prendre en compte tout les cas de figure ou la gadgetlist est modifiée
(toutes les fonctions de création de gadget + closewindow / OpenWindow / FreeGadget /CloseGadgetList / UseGadgetList / OpenGadgetList ...)
un peu con de réinventer la roue alors que cette liste existe déja en interne dans PB
je pense donc que cette demande est legitime et j'espêre que Fred va y répondre
ça me parrait indispenssable
(et également, une fonction pour connaitre le gadget parent (container))
bravo pour tes textes colorés (j'imagine que tu t'es fais un utilitaire pour ça)
merci pour tes explication, mais je connais tous ça
moi ce que je veux c'est la liste des identifiants des gadgets contenu dans un container afin de les modifier, les supprimer ...
à mesa:
tes liens semblent répondre à ma demande
(mais les derniers commentaires du 1er me motivent pas trop (de plus il date de 2006) et pour le 2eme, j'ai une constante introuvable (#Mac_Event_UpdateWindowList))
pour mes besoin immediat, je vais me gerer cette liste moi même
mais c'est un sacrée boulot si on veut prendre en compte tout les cas de figure ou la gadgetlist est modifiée
(toutes les fonctions de création de gadget + closewindow / OpenWindow / FreeGadget /CloseGadgetList / UseGadgetList / OpenGadgetList ...)
un peu con de réinventer la roue alors que cette liste existe déja en interne dans PB
je pense donc que cette demande est legitime et j'espêre que Fred va y répondre
ça me parrait indispenssable
(et également, une fonction pour connaitre le gadget parent (container))