Page 1 sur 1

Changer l'image d'un ListIcon

Publié : mer. 24/août/2005 15:40
par julien
Tout est dans le titre, il me semblai que j'avais lu qq chose dessus, mais impossible de retrouver ! :(

Publié : mer. 24/août/2005 16:00
par lionel_om
On dirait que c'est pas possible
Ou sinon c'est qu ela doc est incomplete !!!

Publié : mer. 24/août/2005 18:56
par Anonyme2
Soit tu passes par les API, cela necessite de savoir si ton image est déjà dans la ListImage assignée à la Listicon et si oui, tu utilises l'index de l'image dans la liste pour remplir la Structure LVITEM et tu utilises le message #LVM_SETITEM, soit elle n'est pas dans la liste et il faut l'ajouter puis pratiquer de même.

Une autre méthode un plus bourrin mais parfaitement fonctionnelle (et tellement plus simple) consiste à mémoriser dans des variables texte ou dans une liste chaînée le texte de chaque élément de la ligne puis d'effacer la ligne et ensuite d'insérer une ligne avec le texte sauvée juste avant en mettant la nouvelle image en paramètre

Si la ligne a des styles particuliers (comme le style 'Cut' etc) il faut rechercher le style de la ligne effacée puis appliquer ce style à la nouvelle ligne inséreée.

voici un code

Code : Tout sélectionner

Enumeration
      #MainWindow
      #ListIconGadget1
      #ButtonGadget
      #ButtonGadget2
      #Font
EndEnumeration

; ;========================================================================================
; ;========================================================================================

If OpenWindow(#MainWindow, 0, 0, 360, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "")
      
      If CreateGadgetList(WindowID()) And ListIconGadget(#ListIconGadget1, 5, 50, 350, 240, "Colonne 1", 320 / 3, #PB_ListIcon_MultiSelect)
            AddGadgetColumn(#ListIconGadget1, 1, "Colonne 2", 300 / 3)
            ButtonGadget(#ButtonGadget, 15, 10, 335, 35, "Changer l'image ligne 3")
                        
            CreateImage(600, 16,16)     ; image affichée pour toutes les lignes
            If StartDrawing(ImageOutput())
               Box(4, 4, 8, 8 , #Blue)
               StopDrawing()
            EndIf
            CreateImage(601,16,16)   ; image qui sera affichée ligne 3
            If StartDrawing(ImageOutput())
               Box(4, 4, 8, 8 , #Red)
               StopDrawing()
            EndIf
            
            For i.b = 1 To 15
                 If i <> 3
                  AddGadgetItem(#ListIconGadget1, -1, "111" + Chr(10) + "222" , UseImage(600))
                Else
                  AddGadgetItem(#ListIconGadget1, -1, "Ligne 3 col 1" + Chr(10) + "Ligne 3 col 2" , UseImage(600))
                EndIf
            Next i
                      
            Repeat
                  Select WaitWindowEvent()
                              
                        Case #PB_EventGadget
                              
                              event = EventGadgetID()
                              If event = #ButtonGadget
                                    ; item est le numéro de ligne
                                    Item = 2  ; ligne 3
    
                                  Text1.s = GetGadgetItemText(#ListIconGadget1, Item, 0) ; colonne 0
                                  Text2.s = GetGadgetItemText(#ListIconGadget1, Item, 1) ; colonne 1, etc
                                  RemoveGadgetItem(#ListIconGadget1, Item)
                                  AddGadgetItem(#ListIconGadget1, Item, Text1+Chr(10)+Text2.s, UseImage(601))
                                 
                              EndIf
                              
                        Case #PB_EventCloseWindow
                              Quit + 1
                              
                  EndSelect
                  
            Until Quit
            
      EndIf
EndIf
End

Publié : mer. 24/août/2005 20:03
par julien
Merci +++ je vais voir tout ça :D