Retirer une nodes enfant sans tout retirer les autres?

Résolu
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008 - 19 nov. 2006 à 08:15
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008 - 20 nov. 2006 à 19:27
Bonjour tous, je vous explique mon problème.

J'ai conçu un petit lecteur mp3s, et puis il y a une fonctionalité pour ajouter un album et toutes ses chansons dans la playlist. Le titre de l'album est parent et toutes les chansons sont des nodes enfants.

Lorsque je veux deleter une nodes enfant, (par keypress = vbkeyback) et bien le parent de la chanson (le titre de l'album) et tous les chansons à l'intérieur de celui-ci disparaisse. Comment seulement supprimer celle qui est sélectionner?

Merci du tips, bonne soirée :)

7 réponses

fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
20 nov. 2006 à 12:09
Voila la solution à ton problème :
En fait le bouton keyback est un évenement déjà géré par le treeview : il génère avant toutes manipulations une séléction du noeud parent (enlève le code du keypress pour voir comment réagit le treeview sur le keyback). C'est pour cela que tous les enfants et le parent sont effacés...

Il faut donc utiliser un autre évnement qui est le key_up avec la variable keycode qui retourne le 'suppr' (contrairement au keypress)

Private Sub playlist_KeyUp(KeyCode As Integer, Shift As Integer)
Dim INTnext As Integer
   
    INTnext = playlist.SelectedItem.Index


    If KeyCode = vbKeyDelete Then
        playlist.Nodes.Remove INTnext
    End If


    KeyAscii = 0


End Sub

Bonne prog,



 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
3
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
19 nov. 2006 à 10:02
Salut,

il faut selectionner le node enfant et puis sur le keypress :
treeview.nodes.remove(treeview.SelectedItem.index)

ça doit marcher, y'a pas de raison.

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
0
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008
19 nov. 2006 à 16:50
C'est justement sa mon code, sa me retire tous les enfants l'accompagnant et leur repertoire parent.

C'est pour cela que je ne comprends plus quoi faire :P
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
19 nov. 2006 à 22:54
ça marche chez moi.
Met ton code pour qu'on puisse y jeter un coup d'oeuil.

 Fiko ;-)

Proverbe chinois : Connaître son ignorance est la meilleur part de la connaissance./FONT>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008
20 nov. 2006 à 04:10
Voila le code vieu, merci encore de te donner cette peine héhé =)




Private Sub playlist_KeyPress(KeyAscii As Integer)
    Dim INTnext As Integer
    INTnext = playlist.SelectedItem.Index





    If KeyAscii = vbKeyBack Then
        playlist.Nodes.Remove (INTnext)
       
        Do Until TABChanson(INTnext) = ""
            TABChanson(INTnext) = TABChanson(INTnext + 1)
            INTnext = INTnext + 1
        Loop





    End If





End Sub



Le loop c'est juste pour éditer ma playlist, je met le chemin de la chanson dans la variable tableau =)

Donc comme je te dit, il ne delete pas seulement le Selecteditem.index mais bien tout le parent-> et ses enfants.

Alors si tu as une idée, merci ben =)
0
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008
20 nov. 2006 à 04:34
Et voici le code que j'utilise pour ajouter toutes les chansons de la "FileListBox"(FLBchanson) vers la "TreeListView" (playlist)



**Les INTincrement etc placer dans les ajout vers la playlist (nodx = ) sont pour éviter que le programme me dise que La Key Is not Unique **


Private Sub CMDalbumadd_Click()
   
INTincrement = 0
FLBselecteditem = 0
 
'INTtrack = On augmente le compteur de chanson pour ajouter la suivante à la suite des autres
INTtrack = (playlist.Nodes.Count + 1)
    
    If FLBchanson.ListCount <> 0 Then
       
    INTincrement3 = INTincrement3 + 1
       
        'Boucle servant à seulement sélectionner le nom du répertoire où se trouve les chansons, et pas son chemin complet
        Do
            STRlettre = Right(DLBdirectory, INTincrement)
            INTincrement = INTincrement + 1
        Loop Until InStr(1, STRlettre, "")
        
        STRlettre = Right(STRlettre, (INTincrement - 2))
        
         'On ajoute le nom du repertoire dans la playlist en parent
        Set nodX = playlist.Nodes.Add(, , Right(DLBdirectory, INTincrement - 2) + CStr(INTincrement3), Right(DLBdirectory, INTincrement - 2))
         'On ne lui met pas de chemin dans le tableau pour que le timer passe par dessus
        TABChanson(INTtrack) = ""
       
        'Boucle servant à ajouter les chansons enfant au dossier parent
        Do
            Set nodX = playlist.Nodes.Add(Right(DLBdirectory, INTincrement - 2) + CStr(INTincrement3), tvwChild, CStr(DLBdirectory) + CStr(playlist.Nodes.Count), FLBchanson.List(FLBselecteditem))
            
            INTtrack = INTtrack + 1
            'On ajoute le chemin de la chanson dans le tableau pour pouvoir le passer au MMControl
            TABChanson(INTtrack) = DLBdirectory + "" + FLBchanson.List(FLBselecteditem)

            FLBselecteditem = FLBselecteditem + 1

      
        Loop Until FLBselecteditem = FLBchanson.ListCount   
       
         nodX.EnsureVisible

    Else

        MsgBox "Le dossier est vide"

    End If
   

End Sub

Et voila, j'espère que c'est pas trop mélangeant, si ya quelque chose que tu te dis, "Huh mais pourquoi ya mit sa là ??" Et bien fais le moi savoir héhé. Je commence en VB depuis peu, il se peut que se soit parfois pas très prope.
0
Octave32 Messages postés 18 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 8 décembre 2008
20 nov. 2006 à 19:27
Oh Chouette! Fonctionne à merveille =)
Merci bien =)
0
Rejoignez-nous