XL 2013 gros problème de rafraîchissement treeview avec image

patricktoulon

XLDnaute Barbatruc
bonjour a tous
j'aurais du déposer dans les ressources vendredi le customUI créator décliné sous 3 versions
je ne l'ai pas fait car j'ai un soucis avec la version treeview/listview
en effet quand je change l'icon d'un élément du treeview avec des imageMSO les images persos sont modifiées dans le treeview
alors que je change juste celle de l'item sélectionné dans le treeview
depuis jeudi dernier je me tord le reste de neurones qu'il me reste pour trouver ce qui ne va pas

dans le dossier ci joint un hersât de mon creator démontrant l'essentiel du problème

dézippez le dossier sur le bureau
ouvrir le fichier xl
cliquez sur loader un projet
l'arborescence s'affiche dans le treeview
cliquez sur un element qui a une imageMSO (dans le treeview)pas ceux qui ont une image perso (issue du dossier "images"
et cliquez sur le bouton a droite du textbox imageMSO pour choisir une autre image MSO
le treeview change l'image mais me met des icons autres que les icons perso dans les autres éléments alors que je n'y ai pas touché

j'ai ajouter un commandbutton pour lister les images a reculons et visiblement je n'ai plus accès a l'imagelist2
j'avoue être perdu dans les méandres de l'incompréhension et ce me les chauffe menu menu sévère
help me !!!au secours !! ;)


démo du problème


demo7.gif
 

Pièces jointes

  • Nouveau dossier (2).zip
    526.4 KB · Affichages: 21
Dernière édition:

patricktoulon

XLDnaute Barbatruc
@ChTi160
tu met le dossier du zip sur ton bureau ou ailleurs
tu ouvre le dossier
tu lance le fichier excel
tu clique sur loader un project existant et choisi dans le file dialog le fichier xml
le treeview devrait te montrer l'arborescence
des items ont des icons perso et d'autre ont des icons MSO( on les reconnait bien)
choisi un des item portant un icon MSO
et clique sur le bouton a droite du textbox imageMso
là tu a mon dialog icon perso qui s'affiche
choisi une lettre et ensuite un icon dans la liste
l'icon de l'item sélectionné dans le treeview devrait changer
mais les autres ne devaient pas ( et c'est ça mon problème)

je pourrais pas livrer la version complète en ayant ce problème
 

patricktoulon

XLDnaute Barbatruc
Ah merci Bruno45 je me sens moins seul déja
pourtant dans l'events du bouton
je ne change que celui qui est sélectionné
TreeView1.SelectedItem.Image = N

VB:
Private Sub btximagemso_Click()
    Dim balise, N$, Nod
    If docXML Is Nothing Then Exit Sub
    If tbxfichtxt = "" Then MsgBox "choisissez un element dans la vue de gauche !!!": Exit Sub
    Set balise = GetXElementsById(docXML, actifelement.Text)
    If balise Is Nothing Then Exit Sub
    If "  tab tabs group separator box " Like "* " & balise.tagname & " *" Then MsgBox "non!! on ne met pas d'icon dans  une  balise " & balise.tagname: Exit Sub
    N = GeticonExcelDialog.GetIconMsoName    'appel dialog retourne le nom selectionné ou rien si fermé brutalement
    If N <> "" Then
        balise.setattribute "imageMso", N
        tbximagemso = N
        TreeView1.SelectedItem.Image = N
    End If
    ClearTreeviewNodes
    'visual
End Sub

et en effet tout a l'heure CHTI160 jouait avec le bouton que j'ai ajouté pour tester la présence des icon perso dans le listimage et il s’avère qu’après un changement d'icon dans le treeview on a plus accès a la listimage d'ailleurs le click sur ce bouton de control ne fait plus rien

c'est une énigme que j'essaie de résoudre depuis jeudi
j'ai bien trouvé un paliatif qui consiste a refaire un refresh complet avec la sub visual mais ca ne me convient pas quand l'arborescence est longue ca me pique un peu les yeux
 

patricktoulon

XLDnaute Barbatruc
bon j'ai trouvé un autre paliatif un peu moins lent que le clear et reconstruction avec la sub visual

ca consiste a reloader les image perso dans le imageliste et faire un refresh direct sur le treeview
vous voulez bien essayer en changeant l'events du bouton imagemso et me dire si c'est pas trop long
VB:
Private Sub btximagemso_Click()
    Dim balise, N$, Nod
    If docXML Is Nothing Then Exit Sub
    If tbxfichtxt = "" Then MsgBox "choisissez un element dans la vue de gauche !!!": Exit Sub
    Set balise = GetXElementsById(docXML, actifelement.Text)
    If balise Is Nothing Then Exit Sub
    If "  tab tabs group separator box " Like "* " & balise.tagname & " *" Then MsgBox "non!! on ne met pas d'icon dans  une  balise " & balise.tagname: Exit Sub
    N = GeticonExcelDialog.GetIconMsoName    'appel dialog retourne le nom selectionné ou rien si fermé brutalement
    If N <> "" Then
        balise.setattribute "imageMso", N
        tbximagemso = N
        TreeView1.SelectedItem.Image = N
    End If
   chargeimage
TreeView1.Refresh
End Sub

mais ca reste une énigme ce truc je ne vois toujours pas la raison du pourquoi le listimage n'est plus accessible ça me pète une migraine ce truc 🤣
 

Discussions similaires

Statistiques des forums

Discussions
315 127
Messages
2 116 534
Membres
112 771
dernier inscrit
mikadu49