TreeGadget : Inserer un élément.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

TreeGadget : Inserer un élément.

Message par Chris »

Comment insérer un élément à un niveau défini.

Voila un bout de code.
Je voudrais, par exemple, insérer un élément "Nouveau" dans "Sous-élément 2", au même niveau que "Sous élément 3".

Évidemment, il faut faire ça en cliquant sur le bouton, pas en l'écrivant dans le code.
Je précise, au cas où... :roll: :mrgreen:

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Tree_0
  #String_Niveau
  #String_Texte
  #Text_0
  #String_Numero
  #Text_1
  #Text_2
  #Btn_New
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 587, 247, 350, 300, "TreeGadget",  #PB_Window_SystemMenu | #PB_Window_TitleBar )
    TreeGadget(#Tree_0, 5, 5, 220, 290)
    
    TextGadget(#Text_0, 240, 10, 50, 15, "Niveau")
    StringGadget(#String_Niveau, 240, 25, 50, 20, "")
    TextGadget(#Text_1, 295, 10, 50, 15, "Numero")
    StringGadget(#String_Numero, 295, 25, 50, 20, "")
    TextGadget(#Text_2, 240, 60, 105, 15, "Texte")
    StringGadget(#String_Texte, 240, 75, 105, 20, "")
    
    ButtonGadget(#Btn_New, 240, 105, 105, 20, "Nouveau")
  EndIf
EndProcedure

Open_Window_0()

AddGadgetItem (#Tree_0, -1, "Element 1", 0, 0)
AddGadgetItem (#Tree_0, -1, "Sous-Element 0", 0, 1)
AddGadgetItem (#Tree_0, -1, "Element 2", 0, 0)
AddGadgetItem (#Tree_0, -1, "Sous-élément 1", 0, 1)
AddGadgetItem (#Tree_0, -1, "Sous-élément 2", 0, 1)
AddGadgetItem (#Tree_0, -1, "Sous-élément 3", 0, 2)
AddGadgetItem (#Tree_0, -1, "Sous-élément 4", 0, 1)
AddGadgetItem (#Tree_0, -1, "Element 3", 0, 0)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Quit = #True
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_New
          ; Deux possibilités que j'ai essayées, aucune ne fonctionne comme je le veux
          AddGadgetItem(#Tree_0, Niveau+1, "Nouveau", 0, #PB_Tree_SubLevel)
          ;AddGadgetItem(#Tree_0, -1, "Nouveau", 0, Niveau+1)
          
        Case #Tree_0
          Select EventType()
            Case #PB_EventType_LeftClick
              Numero = GetGadgetState(#Tree_0)  
              Niveau = GetGadgetItemAttribute(#Tree_0, Numero, #PB_Tree_SubLevel)
              Nom$ = GetGadgetItemText(#Tree_0, Numero)
              SetGadgetText(#String_Niveau, Str(Niveau))
              SetGadgetText(#String_Numero, Str(Numero))
              SetGadgetText(#String_Texte, Nom$)
          EndSelect
      EndSelect
  EndSelect
Until  Quit
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: TreeGadget : Inserer un élément.

Message par Ollivier »

Bonjour Chris,

Logiquement, cette correction devrait te convenir, ou alors c'est que je n'ai pas compris ce que tu voulais...

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Tree_0
  #String_Niveau
  #String_Texte
  #Text_0
  #String_Numero
  #Text_1
  #Text_2
  #Btn_New
EndEnumeration

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 587, 247, 350, 300, "TreeGadget",  #PB_Window_SystemMenu | #PB_Window_TitleBar )
    TreeGadget(#Tree_0, 5, 5, 220, 290)
    
    TextGadget(#Text_0, 240, 10, 50, 15, "Niveau")
    StringGadget(#String_Niveau, 240, 25, 50, 20, "")
    TextGadget(#Text_1, 295, 10, 50, 15, "Numero")
    StringGadget(#String_Numero, 295, 25, 50, 20, "")
    TextGadget(#Text_2, 240, 60, 105, 15, "Texte")
    StringGadget(#String_Texte, 240, 75, 105, 20, "")
    
    ButtonGadget(#Btn_New, 240, 105, 105, 20, "Nouveau")
  EndIf
EndProcedure

Open_Window_0()

AddGadgetItem (#Tree_0, -1, "Element 1", 0, 0)
AddGadgetItem (#Tree_0, -1, "Sous-Element 0", 0, 1)
AddGadgetItem (#Tree_0, -1, "Element 2", 0, 0)
AddGadgetItem (#Tree_0, -1, "Sous-élément 1", 0, 1)
AddGadgetItem (#Tree_0, -1, "Sous-élément 2", 0, 1)
AddGadgetItem (#Tree_0, -1, "Sous-élément 3", 0, 2)
AddGadgetItem (#Tree_0, -1, "Sous-élément 4", 0, 1)
AddGadgetItem (#Tree_0, -1, "Element 3", 0, 0)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Quit = #True
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_New
          ; Deux possibilités que j'ai essayées, aucune ne fonctionne comme je le veux
          AddGadgetItem(#Tree_0, Numero + 1, "Nouveau", 0, Niveau+1)
          ;AddGadgetItem(#Tree_0, -1, "Nouveau", 0, Niveau+1)
          
        Case #Tree_0
          Select EventType()
            Case #PB_EventType_LeftClick
              Numero = GetGadgetState(#Tree_0)  
              Niveau = GetGadgetItemAttribute(#Tree_0, Numero, #PB_Tree_SubLevel)
              Nom$ = GetGadgetItemText(#Tree_0, Numero)
              SetGadgetText(#String_Niveau, Str(Niveau))
              SetGadgetText(#String_Numero, Str(Numero))
              SetGadgetText(#String_Texte, Nom$)
          EndSelect
      EndSelect
  EndSelect
Until  Quit
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: TreeGadget : Inserer un élément.

Message par Chris »

Ca a l'air d'être pile-poil ce que je cherche depuis des heures.

Merci :wink:
Répondre