Icons ändern im ListIcon
Verfasst: 01.11.2006 20:57
Kann man irgendwie die Icons von einzelnen Items ändern ohne dabei die ganzen Einträge neu zu schreiben?
...also quasi on the fly...
...also quasi on the fly...
Code: Alles auswählen
lvi.LV_ITEM
lvi\mask = #LVIF_IMAGE
lvi\iItem = xyz
lvi\iImage = xyz
SendMessage_(xyz,#LVM_SETITEM,0,lvi)
Code: Alles auswählen
lvi.LV_ITEM
lvi\mask = #LVIF_IMAGE
lvi\iItem = 2
lvi\iImage = ImageID(1)
SendMessage_(GadgetID(#ListIconGadget),#LVM_SETITEM,0,lvi)
Code: Alles auswählen
Enumeration
#ListIcon
#ChangeButton
EndEnumeration
Procedure ChangeIcon(IconID.L, Row.L, IconIndex.L)
LVITEM.LV_ITEM
LVITEM\Mask = #LVIF_IMAGE
LVITEM\iItem = Row
LVITEM\iImage = IconIndex
SendMessage_(GadgetID(IconID), #LVM_SETITEM, 0, @LVITEM)
EndProcedure
If OpenWindow(1, 0, 0, 270, 110, "Änderung von Icons im ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(1))
ListIconGadget(#ListIcon, 10, 10, 250, 57, "Icon", 40, #PB_ListIcon_GridLines)
ButtonGadget(#ChangeButton, 85, 80, 110, 20, "1.Icon austauschen")
Icon1 = LoadImage(1, #PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico")
Icon2 = LoadImage(2, #PB_Compiler_Home + "Examples\Sources\Data\Drive.bmp")
AddGadgetColumn(#ListIcon, 1, "Text", 206)
AddGadgetItem(#ListIcon, -1, "" + #LF$ + "Icon 1", Icon1)
AddGadgetItem(#ListIcon, -1, "" + #LF$ + "Icon 2", Icon2)
CurrentIcon = 1
Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent = #PB_Event_Gadget
If EventGadget() = #ChangeButton
CurrentIcon = CurrentIcon ! 3
ChangeIcon(#ListIcon, 0, CurrentIcon)
EndIf
EndIf
Until WindowEvent = #PB_Event_CloseWindow
EndIf
Das "i" steht für den Datentyp "Integer".iImage ist ein Index (wie man an dem "i" vorm Namen sehen kann) und kein handle (sonst wärs ein "h").