change ListIcon and Panel Gadget Tab, Images (!)

Just starting out? Need help? Post your questions and find answers here.
User avatar
netmaestro
PureBasic Bullfrog
PureBasic Bullfrog
Posts: 8451
Joined: Wed Jul 06, 2005 5:42 am
Location: Fort Nelson, BC, Canada

Re: change ListIcon and Panel Gadget Tab, Images (!)

Post by netmaestro »

this goes also to listicon if i have certin item that if i change it status i want to change the icon also, how can it be done...?
So far everyone is covering panel tabs, here is something for listicon:

Code: Select all

; Listicon image changer                               
; netmaestro, Oct 2007 updated for forum tip Feb 2012 

Enumeration 1
  #icon1
  #icon2
  #icon3
  #mask1
  #mask2
  #mask3
EndEnumeration

Global Dim iconinfos.ICONINFO(3)
Global Dim icon(3)

*unpacked = AllocateMemory(2360)
UnpackMemory(?PicPak, *unpacked)
img0 = CatchImage(#PB_Any, *unpacked, 2360)
FreeMemory(*unpacked)
GrabImage(img0, #icon1,0,0,16,16)
GrabImage(img0, #icon2,16,0,16,16)
GrabImage(img0, #icon3,32,0,16,16)
FreeImage(img0)

For a = #mask1 To #mask3
  CreateImage(a, 16, 16) 
  StartDrawing(ImageOutput(a)) 
    DrawImage(ImageID(a-3),0,0) 
    transcol=Point(0,0)        
    For i=0 To 15            
      For j=0 To 15 
        If Point(i,j)=transcol 
          Plot(i,j,#White) 
        Else 
          Plot(i,j,#Black) 
        EndIf 
      Next 
    Next 
  StopDrawing()   
  iconinfos(a-3)\fIcon = #True
  iconinfos(a-3)\hbmMask = ImageID(a) 
  iconinfos(a-3)\hbmColor = ImageID(a-3)
  icon(a-3) = CreateIconIndirect_(iconinfos(a-3))
Next

ImgList = ImageList_Create_(16,16,#ILC_MASK|#ILC_COLOR32,0,3)    
pendingicon = ImageList_AddIcon_(ImgList,icon(1)) 
workingicon = ImageList_AddIcon_(ImgList,icon(2)) 
successicon = ImageList_AddIcon_(ImgList,icon(3))   

Procedure ChangeIcon(gadget,row,column,icon)
  LVG.lv_item      
  LVG\mask=#LVIF_IMAGE|#LVIF_TEXT 
  LVG\iItem=row 
  LVG\iSubItem=column
  txt$=GetGadgetItemText(gadget,row,column)
  LVG\pszText=@txt$ 
  LVG\iImage=icon  
  SendMessage_(GadgetID(gadget),#LVM_SETITEM,0,@LVG) 
EndProcedure

OpenWindow(0,0,0,240,280,"",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ListIconGadget(0,20,20,200,200,"Status",50,#PB_ListIcon_GridLines)
TextGadget(#PB_Any, 20,230,50,20,"Progress:")
ProgressBarGadget(1,70,230,150,14,0,1000)
AddGadgetColumn(0,1,"Description",145)
ButtonGadget(2,20,250,200,20,"Start")

SendMessage_(GadgetID(0),#LVM_SETIMAGELIST,#LVSIL_SMALL,ImgList)  
ImageList_SetBkColor_(ImgList,#CLR_NONE)  
SendMessage_(GadgetID(0),#LVM_SETEXTENDEDLISTVIEWSTYLE,#LVS_EX_SUBITEMIMAGES,#LVS_EX_SUBITEMIMAGES) 

AddGadgetItem(0,-1,Chr(10)+"Job One")
AddGadgetItem(0,-1,Chr(10)+"Job Two")
AddGadgetItem(0,-1,Chr(10)+"Job Three")

Repeat
  EventID = WaitWindowEvent()  
  Select EventID
    Case #PB_Event_Timer
      Select EventTimer()
        Case 1
          progress+10
          SetGadgetState(1,progress)
          If progress >= 1000
            progress=0
            changeicon(0,currentjob-1,0,successicon)
            currentjob+1
            changeicon(0,currentjob-1,0,workingicon)
            If currentjob>3
              RemoveWindowTimer(0,1)
              AddWindowTimer(0,2,1000)
              SetGadgetState(1,0)
            EndIf
          EndIf
          
        Case 2
          changeicon(0,0,0,pendingicon)
          changeicon(0,1,0,pendingicon)
          changeicon(0,2,0,pendingicon)
          DisableGadget(2,0)
          RemoveWindowTimer(0,2)
      EndSelect
      
    Case #PB_Event_Gadget
      If EventGadget()=2
        progress=0
        currentjob=1
        changeicon(0,currentjob-1,0,workingicon)
        AddWindowTimer(0,1,10)
        DisableGadget(2,1)
      EndIf
  EndSelect
Until EventID = #PB_Event_CloseWindow

*unpacked = AllocateMemory(2360)
UnpackMemory(?PicPak, *unpacked)
img0 = CatchImage(#PB_Any, *unpacked, 2360)

DataSection
  PicPak:
  Data.q $A3DB00000938434A,$146920D0A9B3D4B7,$104AB008CA128849,$81890246300C9825,$A3DF42D810607020,$B696BEC12F8D14FF,$EA714BD73324C897
  Data.q $AF78203D055F01BE,$690501A31F72FB00,$3DF02BB3300EFEDB,$B93E317BB3000250,$98D21FB49984D78E,$91B45EFB012F553E,$C3CD780F4154D730
  Data.q $8C5D2637FCD01B58,$D666855403D0374B,$119374CB78095506,$91D3EFC9FE7F91DA,$FBEAFDF925EEA4D8,$6D08C91AFB12A892,$A1F6509D6A5E4760
  Data.q $338E75D406D0020B,$9B48DA2F213885FD,$F74F401B7EEC1ED4,$0ABF8DB097DB9363,$48B884940EBF5048,$315610BF1B793C02,$EFC0CFEEE8FF260C
  Data.q $4FBE85C65BFFF946,$B75E4DA2B180A9A6,$4BDDB26C73E7C699,$BCD054248B7EEFA4,$262A324A075FB9E4,$FD7C782742D7CF09,$6EB0AD37E215B64F
  Data.q $1EFC3684284EFE34,$52D3FF64CE7385A8,$927DCE31360989B4,$3C35EFA93507225B,$82F397B6F85A573F,$FF7CCF0925F24979,$A0EDC922C13ABD92
  Data.q $BA9CD9E7A262A11C,$B0B69348B9CD2D26,$B39E65069027E07F,$5A192271BDE15423,$7089B827E7FC368D,$7F16B0792DE01398,$3CDB25DBD93993FB
  Data.q $9A4EDB7B497A24A5,$112600D351822244,$6627198273D95F6D,$F8D3FD4C1BD93F25,$5051F7CFE0C9B40F,$745F0155AC7069E7,$26D2EF4BE44E016D
  Data.q $CFA40B5D7AC473C5,$6DC79B09352FC184,$58939A411807944D,$2FD74863019E6FAE,$A12C24905B34B9B1,$F28F2CE284748169,$C4271829B7D2D08F
  Data.q $42CED0C3407AFF96,$E1FB360C12660AAC,$3612826A0EDE7C24,$539A27FC726DAFC9,$24D34D16690726B5,$2844DF5A24B2CCE1,$F8939A434F8F7E7B
  Data.q $AB00422301B0B4A1,$56BBB5C296C51E82,$26B6CE4D83DBB8D1,$EC9AFBD45E4193EF,$F3C6960AB7AE3F87,$61E6248E4F09604B,$EB292BFCD21A22CE
  Data.q $8FA26CA584E467F0,$BC224DA4F48F26E5,$BA492D462DA16F49,$16D063AC509AE7BE,$59E8AE4496A36185,$95E7C6A8C91A161F,$0DE5478275523780
  Data.q $9AA70466849ABC69,$CF063C2A89264F45,$E73C25F1BA927553,$619730273F7D7169,$28479ABB332D524E,$77BAC04AC30AC3DA,$3836AAC2BF9C2DB8
  Data.q $1373D89B482D6F71,$2A54CE508CFB72EB,$4105B3455FBE6949,$4239C0845076D925,$58AF6C11879460C1,$18054005085558A2,$6C9A96EB1A41077F
  Data.q $DB6AB1828AD46C27,$1CAC2B187B78AE8A,$BA4D60AA300BBB60,$824B59155875A62B,$BB8C8A0AC0AA7DB4,$16CE02E8AC9CB8A0,$71E7A135E7052B21
  Data.q $17CA1003541465E6,$C601FCD80397979C,$9122745E85149C17
  Data.b $09,$20,$00,$00,$00,$00
  PicPakend:
EndDataSection
BERESHEIT
Post Reply