Retirer une nodes enfant sans tout retirer les autres? [Résolu]

Octave32 18 Messages postés mercredi 15 mars 2006Date d'inscription 8 décembre 2008 Dernière intervention - 19 nov. 2006 à 08:15 - Dernière réponse : Octave32 18 Messages postés mercredi 15 mars 2006Date d'inscription 8 décembre 2008 Dernière intervention
- 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 :)
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
fiko81 381 Messages postés vendredi 24 septembre 2004Date d'inscription 5 septembre 2010 Dernière intervention - 20 nov. 2006 à 12:09
3
Merci
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>

Merci fiko81 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 78 internautes ce mois-ci

Commenter la réponse de fiko81
fiko81 381 Messages postés vendredi 24 septembre 2004Date d'inscription 5 septembre 2010 Dernière intervention - 19 nov. 2006 à 10:02
0
Merci
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>
Commenter la réponse de fiko81
Octave32 18 Messages postés mercredi 15 mars 2006Date d'inscription 8 décembre 2008 Dernière intervention - 19 nov. 2006 à 16:50
0
Merci
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
Commenter la réponse de Octave32
fiko81 381 Messages postés vendredi 24 septembre 2004Date d'inscription 5 septembre 2010 Dernière intervention - 19 nov. 2006 à 22:54
0
Merci
ç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>
Commenter la réponse de fiko81
Octave32 18 Messages postés mercredi 15 mars 2006Date d'inscription 8 décembre 2008 Dernière intervention - 20 nov. 2006 à 04:10
0
Merci
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 =)
Commenter la réponse de Octave32
Octave32 18 Messages postés mercredi 15 mars 2006Date d'inscription 8 décembre 2008 Dernière intervention - 20 nov. 2006 à 04:34
0
Merci
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.
Commenter la réponse de Octave32
Octave32 18 Messages postés mercredi 15 mars 2006Date d'inscription 8 décembre 2008 Dernière intervention - 20 nov. 2006 à 19:27
0
Merci
Oh Chouette! Fonctionne à merveille =)
Merci bien =)
Commenter la réponse de Octave32

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.