[V4] Comprendre le treegadget : père, fils et frère

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

[V4] Comprendre le treegadget : père, fils et frère

Message par Progi1984 »

Code : Tout sélectionner

; purebasic  : 3.94
; auteur : Progi1984
; langue : francais
; date : 18/01/2006 
If OpenWindow(0,10,10,450,400,#PB_Window_ScreenCentered|#PB_Window_SystemMenu, "TreegadgetWorking")
   If CreateGadgetList(WindowID())
    TreeGadget(10,0,0,300,400)
    ButtonGadget(20,300,0,150,30,"Ajouter l'item 1")
    ButtonGadget(21,300,30,150,30,"Ajouter un fils (2) à 1")
    DisableGadget(21,1)
    ButtonGadget(22,300,60,150,30,"Ajouter un fils (3) à 2")
    DisableGadget(22,1)
    ButtonGadget(23,300,90,150,30,"Ajouter un frere (4) à 3")
    DisableGadget(23,1)
    ButtonGadget(24,300,120,150,30,"Ajouter un frere (5) à 2")
    DisableGadget(24,1)
    ButtonGadget(25,300,150,150,30,"Ajouter un frere (6) à 1")
    DisableGadget(25,1)
    ButtonGadget(26,300,180,150,30,"Ajouter un fils (7) à 5")
    DisableGadget(26,1)
    ButtonGadget(27,300,210,150,30,"Ajouter un frere (8) à 2 et 5")
    DisableGadget(27,1)
    ButtonGadget(28,300,240,150,30,"Fin")
    DisableGadget(28,1)
   EndIf
EndIf

Repeat
  EventID=WaitWindowEvent()
  GadgetID=EventGadgetID()
  MenuID=EventMenuID()
  Select EventID
    Case #PB_Event_Gadget
      Select GadgetID
        Case 10
        Case 20
          AddGadgetItem(10,0,"1")
          DisableGadget(20,1)
          DisableGadget(21,0)
        Case 21
          OpenTreeGadgetNode(10,0)
            AddGadgetItem(10,1,"2")
            SetGadgetItemState(10, 0, #PB_Tree_Expanded )
          CloseTreeGadgetNode(10,1)
          DisableGadget(21,1)
          DisableGadget(22,0)
        Case 22
          OpenTreeGadgetNode(10,1)
            AddGadgetItem(10,2,"3")
            SetGadgetItemState(10, 1, #PB_Tree_Expanded )
          CloseTreeGadgetNode(10,2)
          DisableGadget(22,1)
          DisableGadget(23,0)
        Case 23
          OpenTreeGadgetNode(10,1)
            AddGadgetItem(10,3,"4")
            SetGadgetItemState(10, 1, #PB_Tree_Expanded )
          CloseTreeGadgetNode(10,3)
          DisableGadget(23,1)
          DisableGadget(24,0)
        Case 24
          OpenTreeGadgetNode(10,0)
            AddGadgetItem(10,4,"5")
            SetGadgetItemState(10,0, #PB_Tree_Expanded )
          CloseTreeGadgetNode(10,4)
          DisableGadget(24,1)
          DisableGadget(25,0)
        Case 25
         AddGadgetItem(10,5,"6")
          DisableGadget(25,1)
          DisableGadget(26,0)
        Case 26
          OpenTreeGadgetNode(10,4)
            AddGadgetItem(10,5,"7")
            SetGadgetItemState(10,4, #PB_Tree_Expanded )
          CloseTreeGadgetNode(10,5)
          DisableGadget(26,1)
          DisableGadget(27,0)
        Case 27
          OpenTreeGadgetNode(10,0)
            AddGadgetItem(10,6,"8")
            SetGadgetItemState(10,0, #PB_Tree_Expanded )
          CloseTreeGadgetNode(10,6)
          DisableGadget(27,1)
          DisableGadget(28,0)
        Case 28
          End
        Default
          MessageRequester("GadgetID", Str(GadgetID))
      EndSelect
    Case #PB_Event_CloseWindow
      Quit=1
  EndSelect
Until quit=1
Dernière modification par Progi1984 le sam. 04/févr./2006 12:08, modifié 1 fois.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Code pour la V4 (elle déchire) :
J'ai recrée la fonction CountTreeGadgetNodeItems(Gadget.l,Item.l)

Code : Tout sélectionner

If OpenWindow(0,10,10,450,400,#PB_Window_ScreenCentered|#PB_Window_SystemMenu, "TreegadgetWorking")
   If CreateGadgetList(WindowID(0))
    TreeGadget(10,0,0,300,400)
    ButtonGadget(20,300,0,150,30,"Ajouter l'item 1")
    ButtonGadget(21,300,30,150,30,"Ajouter un fils (2) à 1")
    DisableGadget(21,1)
    ButtonGadget(22,300,60,150,30,"Ajouter un fils (3) à 2")
    DisableGadget(22,1)
    ButtonGadget(23,300,90,150,30,"Ajouter un frere (4) à 3")
    DisableGadget(23,1)
    ButtonGadget(24,300,120,150,30,"Ajouter un frere (5) à 2")
    DisableGadget(24,1)
    ButtonGadget(25,300,150,150,30,"Ajouter un frere (6) à 1")
    DisableGadget(25,1)
    ButtonGadget(26,300,180,150,30,"Ajouter un fils (7) à 5")
    DisableGadget(26,1)
    ButtonGadget(27,300,210,150,30,"Ajouter un frere (8) à 2 et 5")
    DisableGadget(27,1)
    ButtonGadget(28,300,240,150,30,"Supprimer 5 et son fils")
    DisableGadget(28,1)
    ButtonGadget(29,300,270,150,30,"Connaitre le nombre de fils de 1")
    DisableGadget(29,1)    
    ButtonGadget(30,300,300,150,30,"Fin")
    DisableGadget(30,1)    
   EndIf
EndIf

Procedure CountTreeGadgetNodeItems(Gadget.l,Item.l)
  For i=item+1 To CountGadgetItems(10)-1
    If GetGadgetItemAttribute(10,i,#PB_Tree_SubLevel)=0
      Break
    Else
      nbfils=nbfils+1
    EndIf
  Next
  ProcedureReturn nbfils
EndProcedure

Repeat
  EventID=WaitWindowEvent()
  GadgetID=EventGadget()
  MenuID=EventMenu()
  Select EventID
    Case #PB_Event_Gadget
      Select GadgetID
        Case 10
        Case 20
          AddGadgetItem(10,0,"1",0,0)
          DisableGadget(20,1)
          DisableGadget(21,0)
        Case 21
          AddGadgetItem(10,1,"2",0,1)
          SetGadgetItemState(10, 0, #PB_Tree_Expanded )
          DisableGadget(21,1)
          DisableGadget(22,0)
        Case 22
          AddGadgetItem(10,2,"3",0,2)
          SetGadgetItemState(10, 1, #PB_Tree_Expanded )
          DisableGadget(22,1)
          DisableGadget(23,0)
        Case 23
          AddGadgetItem(10,3,"4",0,2)
          SetGadgetItemState(10, 1, #PB_Tree_Expanded )
          DisableGadget(23,1)
          DisableGadget(24,0)
        Case 24
          AddGadgetItem(10,4,"5",0,1)
          SetGadgetItemState(10,0, #PB_Tree_Expanded )
          DisableGadget(24,1)
          DisableGadget(25,0)
        Case 25
         AddGadgetItem(10,5,"6",0,0)
          DisableGadget(25,1)
          DisableGadget(26,0)
        Case 26
          AddGadgetItem(10,5,"7",0,2)
          SetGadgetItemState(10,4, #PB_Tree_Expanded )
          DisableGadget(26,1)
          DisableGadget(27,0)
        Case 27
          AddGadgetItem(10,6,"8",0,1)
          SetGadgetItemState(10,0, #PB_Tree_Expanded )
          DisableGadget(27,1)
          DisableGadget(28,0)
        Case 28
          RemoveGadgetItem(10,4)
          DisableGadget(28,1)
          DisableGadget(29,0)
        Case 29
          nbfils_=CountTreeGadgetNodeItems(10,0)
          MessageRequester("TreeGadget V4","1 a "+Str(nbfils_)+" fils")
          DisableGadget(29,1)
          DisableGadget(30,0)
        Case 30
          End
        Default
          MessageRequester("GadgetID", Str(GadgetID))
      EndSelect
    Case #PB_Event_CloseWindow
      Quit=1
  EndSelect
Until quit=1

nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Toi qui cherchait à savoir comment déplacer un fils, est-ce que c'est faisable avec la V4?
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Suis obligé de supprimer mes items et de les remettre mais maintenant c'est beaucoup plus facile car plus besoin de tripatouiller avec les open et close treenode !
Répondre