PureBasic

Forums PureBasic
Nous sommes le Dim 16/Déc/2018 18:26

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 7 messages ] 
Auteur Message
 Sujet du message: gadget : pouvoir acceder à la gadgetlist d'un container
MessagePosté: Mer 28/Juin/2017 16:41 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 25/Juin/2015 16:18
Messages: 209
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


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: gadget : pouvoir acceder à la gadgetlist d'un container
MessagePosté: Mer 28/Juin/2017 16:48 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1431
Tout container va créer une GadgetList, donc UseGadgetList() :?:
:wink:

C'est vrai que cette fonction n'est pas indiquée dans ContainerGadget() :|
(double emploi avec OpenGadgetList() ? )


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: gadget : pouvoir acceder à la gadgetlist d'un container
MessagePosté: Jeu 29/Juin/2017 8:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 25/Juin/2015 16:18
Messages: 209
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 ...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: gadget : pouvoir acceder à la gadgetlist d'un container
MessagePosté: Jeu 29/Juin/2017 8:56 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1431
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)

Image

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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: gadget : pouvoir acceder à la gadgetlist d'un container
MessagePosté: Jeu 29/Juin/2017 9:13 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 1930
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:

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:

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


:)

_________________
Image
Image
Site: http://stline.ddns.net/STLINE/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Dernière édition par Zorro le Jeu 29/Juin/2017 11:42, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: gadget : pouvoir acceder à la gadgetlist d'un container
MessagePosté: Jeu 29/Juin/2017 10:34 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 881
Pour cela, il faudrait utiliser des fonctions internes et non documentées de PB.
Voir ici http://forums.purebasic.com/french/view ... 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:

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.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: gadget : pouvoir acceder à la gadgetlist d'un container
MessagePosté: Jeu 29/Juin/2017 14:41 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 25/Juin/2015 16:18
Messages: 209
à 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))


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 7 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye