Changer l'image d'un ListIcon

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Changer l'image d'un ListIcon

Message par julien »

Tout est dans le titre, il me semblai que j'avais lu qq chose dessus, mais impossible de retrouver ! :(
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

On dirait que c'est pas possible
Ou sinon c'est qu ela doc est incomplete !!!
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

Merci +++ je vais voir tout ça :D
Répondre