listicon gadget speed (with large images, 2000+ items)

Just starting out? Need help? Post your questions and find answers here.
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

Here's a quick and dirty example. For simplicity, I used a global array to hold the data (item text). Feel free to use any other method you see fit. ;)

Code: Select all

;... We'll use 10000 items
#ItemCount = 10000

#LVSICF_NOINVALIDATEALL = 1

UsePNGImageDecoder()

img0 = CatchImage(0, ?myImage)

;... Array to hold data
Global Dim myItems.s(#ItemCount)

Procedure MainProc(hwnd, msg, wParam, lParam)
  result = #PB_ProcessPureBasicEvents
  Select msg
    Case #WM_NOTIFY
      *pnmh.NMHDR = lParam
      Select *pnmh\code
        Case #LVN_GETDISPINFO
          *pnmlvdi.NMLVDISPINFO = lParam
          If *pnmlvdi\item\mask & #LVIF_IMAGE
            ;... Image info is being requested
            *pnmlvdi\item\iImage = *pnmlvdi\item\iItem
          EndIf
          If *pnmlvdi\item\mask & #LVIF_TEXT
            ;... Item text is being requested
            *pnmlvdi\item\pszText = @myItems(*pnmlvdi\item\iItem)
          EndIf
          
      EndSelect
  EndSelect
  ProcedureReturn result
EndProcedure

If OpenWindow(0, 100, 100, 300, 300, "Virtual ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And  CreateGadgetList(WindowID(0))
  SetWindowCallback(@MainProc())
  CreateStatusBar(0, WindowID(0))
  AddStatusBarField(300)
  
  ListIconGadget(1, 5, 5, 290, 250, "Item", 290, #LVS_OWNERDATA)
  ;... Set desired number of ListIconGdaget items
  SendMessage_(GadgetID(1), #LVM_SETITEMCOUNT, #ItemCount, #LVSICF_NOINVALIDATEALL)
  ;... Create our ImageList
  imgList = ImageList_Create_(32, 32, #ILC_COLOR32, 0, #ItemCount)
  For i = 0 To #ItemCount - 1
    ;... Add item text to our array
    myItems(i) = "Otis Number " + Str(i)
    SetGadgetItemText(1, i, myItems(i))
    ;... Add out image to the ImageList
    ImageList_Add_(imgList, img0, 0)
  Next
  ;... Assign our ImageList top the ListIconGadget
  SendMessage_(GadgetID(1), #LVM_SETIMAGELIST, #LVSIL_SMALL, imgList)
  
  Repeat
    event = WaitWindowEvent()
    If event = #PB_Event_Gadget And EventGadget() = 1
      selectedItem = GetGadgetState(1)
      GetGadgetItemText(1, selectedItem)
      StatusBarText(0, 0, GetGadgetItemText(1, selectedItem) + " is selected")
    EndIf
  Until event = #PB_Event_CloseWindow
EndIf

DataSection
myImage:
Data.b $89,$50,$4E,$47,$0D,$0A,$1A,$0A,$00,$00,$00,$0D,$49,$48,$44,$52
Data.b $00,$00,$00,$20,$00,$00,$00,$20,$08,$02,$00,$00,$00,$FC,$18,$ED
Data.b $A3,$00,$00,$00,$09,$70,$48,$59,$73,$00,$00,$0E,$C3,$00,$00,$0E
Data.b $C3,$01,$C7,$6F,$A8,$64,$00,$00,$0B,$64,$49,$44,$41,$54,$78,$9C
Data.b $4D,$94,$69,$50,$5B,$D7,$19,$86,$F5,$D3,$69,$83,$59,$6D,$90,$10
Data.b $20,$B4,$EF,$42,$BA,$92,$D0,$72,$A5,$AB,$7D,$BD,$DA,$D0,$2E,$24
Data.b $B4,$83,$10,$02,$49,$06,$CC,$16,$08,$98,$C5,$32,$C6,$2C,$5E,$B1
Data.b $1D,$EC,$30,$26,$5E,$82,$ED,$86,$C4,$89,$71,$5C,$2F,$6D,$DD,$A6
Data.b $93,$AD,$99,$24,$4D,$D2,$71,$F7,$36,$6D,$33,$89,$DB,$A6,$CB,$74
Data.b $5A,$C7,$69,$0F,$9D,$FE,$E8,$99,$67,$BE,$B9,$F7,$CF,$FB,$9E,$F7
Data.b $FB,$CE,$39,$98,$5C,$3E,$DF,$9B,$CF,$17,$FB,$FB,$87,$46,$47,$27
Data.b $26,$A7,$66,$E6,$4A,$B3,$A5,$D2,$5C,$69,$7E,$7A,$6E,$0E,$7C,$E7
Data.b $0B,$45,$2B,$9F,$33,$58,$48,$7A,$9D,$1A,$EC,$9E,$B2,$26,$5C,$25
Data.b $A1,$7E,$87,$66,$7C,$25,$11,$5F,$49,$C0,$57,$36,$60,$CB,$1B,$B1
Data.b $E5,$B8,$BD,$65,$B8,$3D,$DF,$AC,$A9,$FC,$46,$33,$AE,$82,$55,$5F
Data.b $26,$E0,$90,$3D,$76,$4D,$AE,$33,$10,$0E,$7A,$31,$C9,$74,$A7,$5A
Data.b $AB,$31,$18,$8C,$66,$8B,$D5,$62,$DD,$01,$45,$6D,$26,$B3,$D9,$60
Data.b $30,$84,$42,$91,$44,$3C,$AE,$25,$13,$86,$0A,$09,$AF,$1D,$69,$C2
Data.b $EE,$26,$D4,$57,$90,$1A,$2A,$77,$C0,$83,$5A,$45,$C6,$EF,$40,$AA
Data.b $AF,$6A,$AC,$AB,$68,$AC,$2D,$C3,$EF,$01,$EC,$E6,$E0,$CA,$84,$5C
Data.b $8A,$D7,$A9,$4D,$47,$1C,$76,$AB,$11,$E3,$F5,$FB,$15,$88,$52,$AD
Data.b $D1,$02,$51,$B3,$D5,$6A,$B2,$58,$4C,$66,$8B,$D1,$68,$D2,$E9,$F5
Data.b $C1,$60,$D8,$E7,$72,$A8,$1B,$F1,$83,$7D,$71,$54,$2F,$6E,$C6,$95
Data.b $03,$5D,$4A,$63,$15,$B5,$B1,$9A,$DA,$54,$2D,$61,$37,$CC,$A6,$75
Data.b $CB,$59,$CB,$54,$97,$37,$1D,$70,$D3,$09,$B5,$04,$EC,$6E,$FC,$DE
Data.b $32,$4A,$6D,$99,$0C,$62,$06,$3D,$86,$44,$3B,$AA,$43,$5A,$31,$A1
Data.b $F6,$F6,$40,$30,$D0,$1E,$89,$C4,$13,$C9,$54,$1A,$AC,$CE,$54,$2A
Data.b $1D,$8F,$27,$C1,$6F,$B6,$A7,$D7,$86,$C0,$DA,$46,$5C,$7F,$6F,$87
Data.b $51,$05,$51,$F1,$35,$64,$7C,$0D,$A9,$BE,$9A,$8A,$AF,$06,$D5,$24
Data.b $61,$DC,$3C,$D2,$7B,$79,$D0,$34,$ED,$E3,$94,$12,$AA,$7D,$41,$13
Data.b $83,$80,$6D,$C6,$56,$34,$D5,$55,$48,$21,$66,$BB,$DB,$10,$74,$EB
Data.b $D4,$72,$08,$A3,$54,$21,$52,$B9,$5C,$AE,$50,$68,$75,$7A,$8B,$15
Data.b $05,$21,$8C,$26,$93,$13,$B5,$76,$84,$82,$B9,$A8,$77,$79,$5F,$78
Data.b $7D,$C8,$8B,$B4,$90,$94,$EC,$06,$BF,$B8,$BE,$A8,$C6,$1D,$34,$D7
Data.b $1E,$46,$71,$4B,$11,$D1,$B1,$BC,$77,$C4,$CE,$E8,$D6,$71,$4A,$B9
Data.b $BC,$DF,$6C,$71,$29,$5B,$FA,$23,$28,$CC,$A3,$31,$09,$75,$AC,$66
Data.b $AC,$AA,$95,$AD,$96,$B7,$A8,$64,$7C,$0C,$A2,$56,$C1,$4A,$05,$AC
Data.b $DC,$E9,$92,$D9,$62,$01,$33,$E8,$8E,$06,$87,$7B,$92,$1D,$0E,$5D
Data.b $DE,$D6,$B2,$9A,$81,$37,$C6,$63,$03,$ED,$A6,$FB,$C7,$72,$97,$FA
Data.b $64,$AB,$19,$CD,$4A,$04,$9A,$75,$50,$B6,$0E,$84,$1E,$FD,$60,$7D
Data.b $ED,$40,$FE,$EA,$C9,$C5,$DF,$FD,$E8,$FD,$CD,$E3,$67,$46,$BB,$7B
Data.b $85,$4C,$4A,$D2,$65,$80,$A8,$8D,$CC,$A6,$5A,$60,$C3,$23,$E3,$25
Data.b $7C,$06,$A6,$3B,$9B,$C9,$66,$BB,$7B,$7B,$7B,$73,$BD,$BD,$5D,$5D
Data.b $99,$BE,$74,$FC,$99,$9E,$68,$2E,$84,$C6,$35,$8C,$31,$94,$DC,$AB
Data.b $6E,$18,$76,$70,$EE,$AD,$8D,$BF,$79,$71,$F6,$FA,$6C,$66,$73,$61
Data.b $74,$6B,$6D,$E9,$CA,$4C,$F6,$B9,$E1,$F0,$C6,$64,$E2,$8D,$F5,$D1
Data.b $5B,$6B,$2B,$1F,$DF,$BB,$FD,$F6,$F5,$AD,$4E,$A7,$AE,$D8,$E1,$50
Data.b $0B,$B9,$3E,$BD,$8C,$49,$A8,$A5,$36,$EC,$61,$11,$EA,$04,$B4,$26
Data.b $0C,$2C,$20,$6B,$24,$2C,$23,$22,$B0,$E9,$64,$A9,$76,$CF,$E1,$E1
Data.b $DC,$81,$42,$BA,$D8,$26,$05,$F1,$07,$9D,$A6,$EB,$AB,$AB,$EB,$47
Data.b $A6,$1F,$DE,$39,$F7,$CA,$89,$89,$9F,$DC,$3A,$F7,$60,$F3,$CC,$C6
Data.b $F1,$85,$4F,$5E,$BF,$F0,$60,$7D,$FA,$DB,$27,$8A,$17,$86,$D0,$ED
Data.b $E5,$D4,$5B,$AF,$AC,$3D,$B8,$B6,$B9,$3E,$77,$70,$2E,$13,$F1,$EB
Data.b $A5,$11,$2B,$22,$A2,$13,$38,$44,$2C,$A3,$A9,$96,$DE,$54,$8B,$91
Data.b $F2,$08,$30,$9F,$A8,$84,$C8,$21,$AB,$72,$E5,$D9,$E2,$C2,$58,$7E
Data.b $BC,$37,$D9,$65,$E6,$74,$5A,$F4,$5F,$7C,$F0,$D1,$1F,$7F,$FA,$E3
Data.b $EF,$9C,$9F,$B8,$B9,$9C,$FF,$F0,$D5,$B3,$5F,$7E,$74,$EF,$A3,$1B
Data.b $A7,$D7,$66,$06,$1E,$DE,$D9,$F8,$D5,$F7,$AF,$7E,$F8,$CA,$E9,$E7
Data.b $07,$6D,$37,$E7,$5C,$9B,$73,$51,$AB,$8C,$1B,$6F,$B3,$16,$42,$D6
Data.b $4C,$00,$0D,$9B,$61,$B7,$1E,$E1,$53,$F0,$5C,$12,$8E,$45,$C4,$01
Data.b $83,$66,$79,$0B,$51,$C1,$27,$95,$06,$3A,$4F,$CF,$0D,$1F,$1C,$CE
Data.b $8F,$A5,$5C,$02,$1A,$E1,$AD,$57,$B7,$EF,$5F,$79,$E1,$CD,$AD,$E3
Data.b $6F,$9C,$CD,$6E,$4E,$85,$3F,$7E,$7D,$E3,$D3,$EF,$5D,$FA,$C9,$2B
Data.b $4B,$57,$0E,$C4,$7E,$76,$F3,$C4,$2F,$EF,$6D,$AC,$1C,$18,$99,$2C
Data.b $74,$AD,$F5,$3B,$1E,$AC,$04,$A7,$22,$8A,$84,$81,$AD,$17,$D1,$29
Data.b $CD,$F8,$A0,$45,$8D,$AA,$61,$60,$C0,$A7,$36,$B4,$90,$F1,$18,$59
Data.b $4B,$33,$0C,$0C,$04,$E4,$D9,$7D,$E9,$A3,$13,$85,$67,$73,$51,$88
Data.b $DE,$5C,$1A,$CC,$17,$C2,$9E,$A0,$46,$78,$EB,$68,$E7,$F6,$A1,$C8
Data.b $F2,$48,$76,$A4,$2F,$F3,$C9,$AD,$73,$EF,$5C,$9E,$BB,$30,$1E,$FA
Data.b $F9,$AD,$D5,$BF,$BE,$77,$3D,$68,$D5,$E4,$B2,$3D,$17,$4F,$94,$D6
Data.b $87,$5C,$F7,$E7,$5D,$5E,$98,$56,$55,$B6,$AB,$E2,$E9,$5D,$22,$36
Data.b $D5,$8A,$C8,$78,$24,$1C,$44,$6F,$84,$A8,$0D,$18,$39,$0F,$18,$34
Data.b $23,$10,$39,$E5,$31,$2D,$8F,$17,$DD,$5A,$09,$B9,$11,$1B,$B6,$48
Data.b $93,$3A,$EA,$91,$AC,$F9,$83,$F3,$5D,$77,$57,$47,$CE,$9F,$3A,$AA
Data.b $45,$90,$B7,$BF,$75,$EC,$BD,$EB,$2B,$37,$CF,$CC,$3C,$BC,$7B,$E9
Data.b $F3,$77,$6F,$84,$1C,$D6,$B0,$CF,$AF,$84,$F8,$09,$9F,$EB,$4C,$4E
Data.b $21,$21,$57,$55,$94,$ED,$AA,$7C,$7A,$17,$6E,$4F,$65,$A4,$CD,$DE
Data.b $58,$5B,$21,$A4,$37,$89,$68,$8D,$18,$98,$4F,$02,$FD,$51,$08,$88
Data.b $5A,$31,$7D,$30,$E5,$87,$F9,$0C,$6C,$4D,$D9,$DE,$CA,$6F,$06,$54
Data.b $AC,$1F,$1C,$8B,$5C,$1D,$B3,$1C,$79,$A6,$18,$F6,$78,$22,$81,$E0
Data.b $F3,$0B,$93,$BF,$F9,$E1,$8D,$B7,$6E,$6E,$3E,$FC,$E1,$ED,$37,$6E
Data.b $5C,$F1,$D9,$6C,$93,$53,$0B,$43,$93,$45,$8F,$DD,$9E,$D0,$51,$C5
Data.b $C4,$8A,$EA,$DD,$4F,$11,$EA,$2A,$B8,$24,$2C,$09,$57,$5D,$5B,$F9
Data.b $B4,$80,$DA,$D0,$CA,$6C,$C2,$80,$01,$28,$05,$24,$15,$44,$46,$20
Data.b $4A,$D8,$2C,$93,$F3,$99,$D5,$E5,$4F,$D5,$54,$3C,$45,$C1,$55,$DE
Data.b $9E,$43,$8B,$7E,$8D,$C7,$6C,$DC,$3F,$37,$51,$4C,$64,$FA,$52,$A9
Data.b $F7,$5E,$BF,$7A,$ED,$C4,$81,$73,$F3,$63,$17,$4E,$2E,$E6,$3B,$3B
Data.b $B3,$C1,$76,$BF,$4E,$AE,$95,$8A,$A3,$6A,$22,$44,$28,$6F,$AC,$2D
Data.b $97,$B2,$09,$30,$97,$08,$3C,$1A,$F6,$96,$8B,$E8,$8D,$12,$26,$01
Data.b $1C,$53,$B0,$7D,$92,$52,$48,$D2,$88,$69,$9D,$5E,$33,$97,$4A,$A8
Data.b $DA,$BD,$AB,$BE,$A6,$4C,$48,$AB,$3F,$9F,$87,$15,$3C,$52,$C2,$EB
Data.b $DB,$17,$0F,$65,$9C,$AE,$85,$A9,$03,$2F,$9D,$2E,$BD,$70,$78,$60
Data.b $2A,$17,$1D,$4D,$F9,$8A,$D9,$6C,$2A,$18,$1A,$CA,$17,$63,$4E,$FD
Data.b $4C,$58,$24,$22,$56,$50,$F0,$35,$E0,$CE,$23,$7C,$92,$94,$D5,$44
Data.b $C3,$D7,$88,$99,$4D,$32,$0E,$11,$83,$08,$C9,$4A,$88,$A4,$15,$53
Data.b $51,$65,$4B,$3A,$E0,$6C,$A1,$60,$F7,$54,$3C,$C5,$6E,$AE,$35,$C9
Data.b $E8,$D3,$61,$41,$CE,$C6,$0B,$DA,$4D,$E1,$36,$77,$4F,$3C,$31,$3D
Data.b $B2,$BF,$D4,$1B,$7C,$7E,$B6,$30,$1C,$77,$24,$50,$04,$55,$29,$0E
Data.b $1F,$2C,$9D,$5C,$5E,$D9,$1F,$75,$AC,$15,$75,$10,$B1,$8A,$D1,$B4
Data.b $57,$03,$51,$D4,$02,$B2,$92,$47,$02,$CD,$91,$72,$88,$30,$97,$84
Data.b $01,$EA,$08,$44,$D2,$49,$A8,$26,$39,$C3,$20,$65,$C0,$3C,$42,$63
Data.b $ED,$6E,$25,$9F,$68,$81,$99,$CF,$46,$24,$97,$47,$CD,$87,$F7,$85
Data.b $4F,$2D,$2F,$1F,$5B,$5C,$9E,$2C,$E4,$C6,$92,$BE,$E3,$53,$03,$4B
Data.b $23,$99,$E1,$6C,$AA,$3B,$E4,$CB,$C4,$E2,$53,$C3,$83,$13,$49,$F3
Data.b $A5,$31,$0B,$BB,$A1,$02,$5C,$60,$60,$A0,$15,$52,$D4,$10,$05,$69
Data.b $21,$2B,$78,$44,$50,$31,$9A,$56,$AA,$5E,$42,$33,$C8,$69,$66,$98
Data.b $01,$90,$B0,$1A,$28,$F8,$2A,$14,$66,$39,$54,$9C,$01,$BF,$E4,$C1
Data.b $D1,$D0,$D1,$82,$E3,$C4,$DC,$F8,$C1,$C9,$A9,$13,$87,$0E,$AE,$2D
Data.b $CC,$BE,$BE,$F5,$D2,$E5,$E7,$CE,$9C,$58,$5A,$9C,$1D,$1E,$4A,$45
Data.b $22,$49,$BF,$73,$3C,$AA,$3E,$96,$81,$19,$B8,$72,$F0,$F8,$E8,$44
Data.b $34,$43,$2B,$5D,$2B,$A2,$EA,$44,$74,$B5,$80,$A2,$E2,$53,$30,$06
Data.b $19,$DD,$28,$A3,$03,$69,$0B,$CC,$B0,$21,$2C,$01,$15,$DB,$CA,$C4
Data.b $3B,$D5,$5C,$97,$96,$D7,$ED,$12,$DF,$59,$F0,$6F,$4E,$38,$4B,$FB
Data.b $A2,$43,$B9,$CC,$FC,$CC,$CC,$C6,$D9,$33,$BF,$FF,$F4,$0F,$8F,$3E
Data.b $7F,$74,$7B,$FB,$DB,$F9,$6C,$CE,$DF,$E6,$72,$68,$E4,$31,$2D,$6B
Data.b $C4,$DB,$E2,$91,$93,$B9,$A4,$3A,$93,$84,$6E,$94,$30,$40,$35,$88
Data.b $E9,$3A,$21,$4D,$0D,$51,$81,$01,$CD,$28,$67,$58,$95,$2C,$80,$0D
Data.b $61,$5B,$15,$0C,$87,$8A,$ED,$D6,$72,$DB,$B4,$DC,$84,$4D,$F8,$5A
Data.b $C9,$7F,$6D,$C2,$BA,$D8,$E7,$E8,$EE,$08,$8D,$EE,$1F,$3E,$7E,$F4
Data.b $E4,$97,$5F,$FE,$FD,$AB,$AF,$9E,$3C,$7C,$F8,$AB,$43,$07,$0F,$07
Data.b $FD,$01,$A5,$44,$EC,$51,$B2,$9F,$09,$CB,$0E,$A5,$B5,$3C,$12,$D6
Data.b $2A,$63,$5A,$E5,$00,$96,$59,$CA,$D2,$83,$28,$10,$05,$63,$94,$D3
Data.b $2D,$4A,$E6,$7F,$D5,$59,$76,$84,$E5,$50,$73,$DA,$FE,$AB,$EE,$D1
Data.b $71,$43,$26,$E1,$CB,$07,$FD,$CF,$15,$75,$F3,$69,$8D,$17,$35,$82
Data.b $67,$F7,$E2,$0B,$9B,$73,$B3,$0B,$85,$9E,$7E,$97,$DD,$63,$D4,$19
Data.b $93,$B1,$24,$87,$49,$67,$36,$D7,$97,$BA,$AD,$4B,$19,$3D,$44,$C3
Data.b $A3,$30,$DB,$22,$67,$A2,$72,$96,$45,$CA,$32,$4A,$E9,$7A,$11,$0D
Data.b $63,$56,$30,$50,$84,$85,$EE,$48,$B3,$DB,$B4,$1C,$B0,$77,$AF,$81
Data.b $B7,$83,$8E,$D7,$6E,$11,$7D,$EF,$FC,$10,$30,$18,$F1,$89,$D5,$12
Data.b $68,$FF,$C0,$60,$D0,$17,$72,$3B,$DC,$99,$74,$B6,$3F,$3F,$88,$1A
Data.b $2D,$3E,$B7,$8F,$4D,$A7,$D7,$ED,$A9,$FA,$D6,$CA,$BE,$3E,$1B,$9F
Data.b $43,$AC,$73,$28,$39,$36,$98,$65,$83,$D9,$20,$84,$45,$CE,$32,$49
Data.b $19,$18,$BB,$9A,$0D,$D4,$6D,$2A,$96,$53,$C3,$76,$69,$B9,$6E,$3D
Data.b $CF,$6F,$E4,$FB,$8C,$2D,$01,$B3,$20,$6A,$97,$7E,$77,$63,$F6,$F6
Data.b $B1,$4E,$14,$22,$8A,$79,$8C,$64,$47,$2C,$E8,$F1,$77,$26,$BA,$56
Data.b $4F,$9E,$9B,$99,$2A,$59,$35,$7A,$BD,$52,$25,$E0,$70,$B0,$B5,$D5
Data.b $57,$E6,$73,$3E,$29,$91,$D1,$B4,$C7,$89,$70,$1D,$C8,$8E,$07,$08
Data.b $81,$2A,$38,$16,$19,$13,$E3,$D6,$F3,$DB,$74,$3C,$B7,$9E,$EB,$D6
Data.b $71,$DD,$06,$9E,$CF,$C8,$0F,$9A,$05,$21,$8B,$30,$64,$15,$76,$D8
Data.b $C4,$57,$97,$FA,$BF,$7F,$65,$C1,$28,$A6,$71,$68,$24,$AD,$4A,$D3
Data.b $E1,$0D,$A4,$3C,$DE,$B0,$DB,$EF,$B1,$B7,$65,$BC,$BE,$74,$47,$A2
Data.b $85,$CD,$69,$C2,$D7,$1D,$EB,$F7,$68,$59,$B5,$6C,$52,$5D,$9B,$A6
Data.b $C5,$AB,$13,$80,$EA,$54,$71,$6D,$C0,$49,$C1,$C6,$F8,$CD,$42,$9F
Data.b $51,$E0,$33,$81,$5D,$03,$5D,$28,$64,$86,$22,$A8,$30,$82,$8A,$23
Data.b $36,$71,$D4,$21,$BD,$7F,$6E,$F2,$E5,$B3,$33,$4E,$25,$57,$02,$41
Data.b $7E,$AF,$6F,$7A,$7C,$6A,$7F,$5F,$BF,$C3,$64,$D5,$23,$9A,$C9,$B1
Data.b $D9,$ED,$ED,$7B,$A9,$64,$8A,$48,$20,$5C,$3A,$10,$87,$29,$35,$E0
Data.b $9D,$F0,$68,$77,$0C,$00,$6E,$2D,$DF,$A5,$6E,$71,$20,$5C,$4C,$10
Data.b $15,$05,$AD,$00,$61,$C4,$2E,$89,$3A,$64,$1D,$F6,$D6,$84,$53,$1A
Data.b $73,$49,$63,$0E,$49,$C2,$25,$7B,$FF,$A5,$E5,$0B,$8B,$23,$76,$9D
Data.b $4C,$A5,$50,$4E,$4E,$4C,$AD,$1E,$5F,$9D,$1A,$9F,$8E,$05,$C3,$C1
Data.b $36,$DF,$C2,$74,$E9,$B5,$AD,$9B,$E3,$63,$E3,$0D,$38,$DC,$44,$44
Data.b $41,$C7,$96,$23,$02,$92,$DF,$C0,$0F,$18,$21,$9F,$5E,$00,$70,$6B
Data.b $F8,$20,$0A,$26,$84,$8A,$DB,$51,$71,$D8,$D6,$0A,$A4,$A3,$4E,$49
Data.b $CC,$25,$4B,$BA,$E1,$B4,$5B,$91,$6A,$93,$A7,$3D,$8A,$4F,$6E,$9D
Data.b $3A,$33,$9D,$33,$22,$AD,$6C,$26,$73,$64,$F8,$99,$E1,$E2,$C0,$99
Data.b $85,$A5,$E3,$B3,$A5,$91,$5C,$61,$F3,$B9,$F3,$4B,$B3,$F3,$85,$9E
Data.b $3E,$7C,$DD,$DE,$A9,$F6,$56,$3A,$BE,$5A,$2F,$A6,$05,$4C,$50,$C0
Data.b $24,$F4,$9B,$84,$20,$84,$6F,$07,$68,$27,$C1,$4E,$37,$9C,$92,$0E
Data.b $87,$24,$EE,$92,$01,$D1,$6E,$BF,$2A,$E3,$57,$75,$7A,$E0,$8C,$0F
Data.b $79,$EB,$F2,$DC,$FA,$A1,$82,$45,$2D,$61,$52,$29,$B9,$4C,$0F,$78
Data.b $91,$16,$27,$A7,$EF,$6D,$DF,$FD,$F0,$BD,$1F,$BF,$7A,$75,$EB,$D9
Data.b $E1,$09,$97,$CD,$41,$C6,$55,$1F,$89,$40,$3A,$3E,$01,$8C,$37,$64
Data.b $06,$ED,$95,$84,$CC,$A2,$A0,$51,$E8,$37,$80,$28,$10,$A6,$C3,$25
Data.b $8B,$ED,$20,$4D,$B6,$C1,$29,$0F,$DC,$E5,$53,$66,$02,$2A,$E0,$D1
Data.b $ED,$53,$02,$EE,$AF,$8D,$BC,$76,$7A,$CC,$87,$6A,$04,$5C,$26,$2C
Data.b $95,$ED,$2F,$0C,$AC,$AF,$9E,$BD,$F3,$E2,$D6,$DD,$6B,$37,$1F,$BC
Data.b $7A,$EB,$83,$B7,$DF,$69,$F7,$78,$0E,$65,$D0,$CD,$21,$43,$BB,$8A
Data.b $D1,$A6,$E5,$C5,$EC,$92,$B8,$53,$16,$B1,$B6,$FA,$0D,$C2,$A0,$49
Data.b $14,$30,$8A,$30,$31,$37,$9C,$70,$C3,$49,$8F,$22,$ED,$43,$32,$01
Data.b $24,$1B,$54,$F5,$84,$34,$B9,$90,$7A,$A7,$B6,$EB,$B6,$96,$FA,$7E
Data.b $71,$FB,$78,$6F,$CC,$D3,$9B,$49,$25,$A2,$1D,$8B,$F3,$F3,$5F,$7C
Data.b $FE,$C5,$E3,$C7,$8F,$BF,$7E,$F2,$F5,$EF,$3F,$FD,$6C,$65,$76,$FE
Data.b $50,$21,$72,$7F,$29,$BD,$3D,$EB,$E1,$34,$56,$BB,$34,$FF,$33,$00
Data.b $B3,$0C,$59,$C5,$41,$93,$10,$E4,$C0,$A4,$3C,$0A,$A0,$DE,$05,$B6
Data.b $1C,$D2,$F4,$45,$F4,$7D,$11,$43,$6F,$44,$9F,$8F,$E8,$0B,$11,$FD
Data.b $60,$DC,$F4,$C1,$CB,$8B,$BF,$BE,$73,$F2,$C6,$F9,$F9,$3F,$3D,$7A
Data.b $F4,$E7,$3F,$7D,$F1,$E4,$C9,$93,$AF,$1E,$3F,$FE,$EC,$B7,$BF,$BE
Data.b $B6,$71,$71,$61,$62,$F4,$EE,$8B,$A7,$BE,$7C,$F7,$DA,$F6,$B4,$7B
Data.b $75,$22,$17,$B7,$23,$36,$05,$2B,$05,$DA,$E0,$56,$24,$DB,$14,$E0
Data.b $0E,$45,$AC,$12,$00,$26,$0D,$3A,$1E,$D4,$74,$87,$B4,$3D,$61,$5D
Data.b $3E,$66,$CA,$47,$8D,$FB,$12,$96,$42,$CC,$38,$90,$B4,$1E,$D9,$1F
Data.b $FC,$EC,$C1,$E9,$BF,$BD,$7F,$E5,$C6,$B9,$F9,$7F,$FE,$E3,$1F,$FF
Data.b $FE,$BF,$F5,$F5,$57,$FF,$FA,$CB,$4F,$DF,$F9,$EB,$C7,$77,$FF,$FC
Data.b $E6,$C5,$F5,$21,$67,$2A,$96,$7A,$F7,$E5,$53,$FD,$11,$5D,$76,$67
Data.b $7E,$EA,$2E,$9F,$2A,$E5,$56,$46,$C1,$B1,$B4,$C9,$FE,$03,$57,$58
Data.b $30,$31,$4C,$FD,$20,$E8,$00,$00,$00,$00,$49,$45,$4E,$44,$AE,$42
Data.b $60,$82
EndDataSection
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
Heathen
Enthusiast
Enthusiast
Posts: 498
Joined: Tue Sep 27, 2005 6:54 pm
Location: At my pc coding..

Post by Heathen »

Wow, thanks Sparkie. Thats some really useful code! :)
I love Purebasic.
Pantcho!!
Enthusiast
Enthusiast
Posts: 538
Joined: Tue Feb 24, 2004 3:43 am
Location: Israel
Contact:

Post by Pantcho!! »

It may sound stupid but, before updating the list i hide the gadget and when it finish loading all items i unhide it to show it.

i had this problem and when i hide the gadget it works very fast.

I also added an image gadget under it that when i hide the list gadget it shows the image "Please wait.."
User avatar
Rook Zimbabwe
Addict
Addict
Posts: 4322
Joined: Tue Jan 02, 2007 8:16 pm
Location: Cypress TX
Contact:

Post by Rook Zimbabwe »

That is a great idea Sparkie.
Pantcho.... that is a good one too. Lots of things to remember now... 8)
Binarily speaking... it takes 10 to Tango!!!

Image
http://www.bluemesapc.com/
Mistrel
Addict
Addict
Posts: 3415
Joined: Sat Jun 30, 2007 8:04 pm

Post by Mistrel »

Why is it that after the first item is selected none of the images highlight anymore?

If you comment out these lines it's no longer possible to identify which element is selected:

Code: Select all

myItems(i) = "Otis Number " + Str(i)
SetGadgetItemText(1, i, myItems(i))
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

That'll be a bug in my code. I'll have a look later this afternoon.
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
Mistrel
Addict
Addict
Posts: 3415
Joined: Sat Jun 30, 2007 8:04 pm

Post by Mistrel »

I found a solution. Add #PB_ListIcon_FullRowSelect to ListIconGadget() and it works fine. :)
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

Something strange going on for me here. The image I use here is a 16x16 .ico file.

Image #1 is the result of me clicking on Item Number 1.
the image does not appear selected (this is not correct behavior)
Image

Image #2 is the result of me then clicking on Item Number 2.
the image does appear selected (this is correct behavior)
Image

Image #3 is the result of me clicking on a different window then back onto the Test window.
the image does appear selected but the text does not (neither should appear as selected)
Image

This only happens when using images.

Can anyone else confirm?

Code: Select all

CatchImage(0, ?myImage) 

If OpenWindow(0, 0, 0, 200, 160, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And  CreateGadgetList(WindowID(0)) 
  ListIconGadget(1, 5, 5, 190, 150, "Item", 150) 
  For i = 0 To 5
    AddGadgetItem(1, i, "Item Number " + Str(i) , ImageID(0))
  Next 
   
  Repeat 
    event = WaitWindowEvent() 
  Until event = #PB_Event_CloseWindow 
EndIf 

DataSection
myImage:
Data.b $00,$00,$01,$00,$01,$00,$10,$10,$00,$00,$01,$00,$08,$00,$68,$05
Data.b $00,$00,$16,$00,$00,$00,$28,$00,$00,$00,$10,$00,$00,$00,$20,$00
Data.b $00,$00,$01,$00,$08,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$80,$80,$80,$00,$00,$CA,$FF,$00,$30,$FF,$5A,$00,$00,$CC
Data.b $FF,$00,$00,$D1,$FF,$00,$C1,$FF,$FF,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01
Data.b $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$06,$06
Data.b $06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$06,$02,$02
Data.b $02,$02,$01,$02,$02,$01,$01,$02,$02,$01,$02,$02,$02,$02,$01,$01
Data.b $01,$01,$01,$01,$02,$01,$01,$02,$01,$01,$01,$01,$01,$01,$01,$FF
Data.b $FF,$FF,$01,$02,$01,$01,$01,$01,$02,$01,$FF,$FF,$FF,$01,$01,$FF
Data.b $FF,$FF,$01,$02,$02,$02,$02,$02,$02,$01,$FF,$FF,$FF,$01,$00,$01
Data.b $01,$01,$01,$02,$02,$02,$02,$02,$02,$01,$01,$01,$01,$00,$00,$01
Data.b $02,$04,$05,$02,$02,$01,$01,$02,$02,$02,$02,$02,$01,$00,$00,$00
Data.b $02,$02,$01,$01,$01,$01,$01,$01,$01,$01,$02,$02,$00,$00,$00,$00
Data.b $01,$02,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$02,$01,$00,$00,$00,$00
Data.b $01,$02,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$02,$01,$00,$00,$00,$00
Data.b $01,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$01,$00,$00,$00,$00
Data.b $00,$01,$02,$03,$03,$03,$03,$03,$03,$02,$01,$00,$00,$00,$00,$00
Data.b $00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$00,$00,$00,$00,$C7,$E3
Data.b $00,$00,$C7,$E3,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$01
Data.b $00,$00,$80,$01,$00,$00,$C0,$03,$00,$00,$C0,$03,$00,$00,$C0,$03
Data.b $00,$00,$C0,$03,$00,$00,$E0,$07,$00,$00,$F0,$0F,$00,$00
EndDataSection
*** Edit *** You can ignore this post as this appears to be normal Windows behavior.
Last edited by Sparkie on Sat Aug 30, 2008 4:04 pm, edited 1 time in total.
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
Mistrel
Addict
Addict
Posts: 3415
Joined: Sat Jun 30, 2007 8:04 pm

Post by Mistrel »

I can confirm this on XP Pro SP2.

Sparkie, is it possible using your code to display the image in a column other than the first? Can images be displayed in more than one column?

I think it goes something like this but I haven't gotten it to work yet:

Code: Select all

; fill up var to set subitem image and text
var.lvitem
Var\mask     = #LVIF_IMAGE | #LVIF_TEXT
Var\iItem    = 1  ; row number for change
Var\iSubItem = 1  ; item
Var\pszText  = @"Item"  ; text to change to
Var\iImage   = 1; index of image in the list
SendMessage_(GadgetID(1), #LVM_SETITEM, 0, @Var)
Mistrel
Addict
Addict
Posts: 3415
Joined: Sat Jun 30, 2007 8:04 pm

Post by Mistrel »

I've gotten most of the kinks worked out except for two. When I set the list view style to allow sub-images the first column automatically sets itself to the index 0 of the image list. I set the first index to transparent but the column is still unnecessarily offset by the width.

The second issue is that I don't know how to remove an image once I've added it to a particular element in the list view.

Here is the code for what I have working so far:

Code: Select all

#MainWindow=0
#ListIconGadget1=1
#Font=5

#LVM_SETEXTENDEDLISTVIEWSTYLE=4150
#LVS_EX_SUBITEMIMAGES=2

UsePNGImageDecoder()
UseJPEGImageDecoder()

Procedure ExtendListIconGadget(hListIcon, IconWidth, IconHeight, hDefaultImage, hDefaultImageMask)
	hImageList=ImageList_Create_(IconWidth,IconHeight,#ILC_MASK|#ILC_COLOR32,0,100)
	; Assign the image list to the listicongadget
	SendMessage_(hListIcon,#LVM_SETIMAGELIST,#LVSIL_SMALL,hImageList)
	
	; Set background color to CLR_NONE so images are drawn transparently using the mask
	ImageList_SetBkColor_(hImageList,#CLR_NONE)
	
	; Set extended style to the listicongadget to allow images for subitems
	SendMessage_(hListIcon,#LVM_SETEXTENDEDLISTVIEWSTYLE,#LVS_EX_SUBITEMIMAGES,#LVS_EX_SUBITEMIMAGES)
	
	; If no default image is specified then set the default image to transparent
	If Not hDefaultImage
		ImageID=CreateImage(#PB_Any,32,32)
		ImageList_AddMasked_(hImageList,ImageID(ImageID),#Black)
		FreeImage(ImageID)
	Else
		ImageList_Add_(hImageList,hDefaultImage,hImageMask)
	EndIf
		
	ProcedureReturn hImageList
EndProcedure

Procedure AddImageListElement(hImageList, hImage, hImageMask)
	ImageIndex=ImageList_Add_(hImageList,hImage,hImageMask)
	ProcedureReturn ImageIndex
EndProcedure

; Procedure ResizeImageList(hImageList, Width, Height)
; 
; EndProcedure

Procedure SetListIconElement(hListIcon, ImageListIndex, Row, Column, Text.s, ReplaceText)
	Var.LV_ITEM
	Var\mask=#LVIF_IMAGE|#LVIF_TEXT
	Var\iItem=Row ; row number for change
	Var\iSubItem=Column ; column
	Var\iImage=ImageListIndex; index of icon in the list
	If ReplaceText=1
		Var\pszText=@Text.s ; text
	Else
		GadgetPBID=GetProp_(hListIcon,"PB_ID")
		If IsGadget(GadgetPBID)
			Text.s=GetGadgetItemText(GadgetPBID,Row,Column)
			Var\pszText=@Text.s
		EndIf
	EndIf
	SendMessage_(hListIcon,#LVM_SETITEM,0,@Var)
EndProcedure

If OpenWindow(#MainWindow,0,0,320,240,"Icon List",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
	 If CreateGadgetList(WindowID(#MainWindow)) And ListIconGadget(#ListIconGadget1,0,0,320,240,"Column 1",298/3 ,#PB_ListIcon_FullRowSelect)
			AddGadgetColumn(#ListIconGadget1,1,"Column 2",298/3)
			AddGadgetColumn(#ListIconGadget1,2,"Column 3",298/3)
	 EndIf
	 FontID=LoadFont(#Font,"ARIAL",9)
	 SetGadgetFont(#ListIconGadget1,FontID)

	hImageList=ExtendListIconGadget(GadgetID(#ListIconGadget1),32,32,0,0)

	For i=0 To 4
		AddGadgetItem(#ListIconGadget1,i,"Item "+Str(i))
	Next i

	ImageID=CatchImage(#PB_Any,?myImage)
	ImageIndex=AddImageListElement(hImageList,ImageID(ImageID),0)
	If ImageIndex=-1
		Debug "Failed to load image"
	EndIf
	FreeImage(ImageID)

	For i=0 To 4
		SetGadgetItemText(#ListIconGadget1,i,"Item "+Str(i),1)
		SetGadgetItemText(#ListIconGadget1,i,"Item "+Str(i),2)
	Next i
	
	For i=2 To 3
		SetListIconElement(GadgetID(#ListIconGadget1),ImageIndex,i,1,"Alt "+Str(i),1)
	Next
	
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
			Quit=1
		EndSelect
	Until Quit
	If HwndIm_List
		 ImageList_Destroy_(HwndIm_List)
	EndIf
EndIf

End

DataSection
myImage:
Data.b $89,$50,$4E,$47,$0D,$0A,$1A,$0A,$00,$00,$00,$0D,$49,$48,$44,$52
Data.b $00,$00,$00,$20,$00,$00,$00,$20,$08,$02,$00,$00,$00,$FC,$18,$ED
Data.b $A3,$00,$00,$00,$09,$70,$48,$59,$73,$00,$00,$0E,$C3,$00,$00,$0E
Data.b $C3,$01,$C7,$6F,$A8,$64,$00,$00,$0B,$64,$49,$44,$41,$54,$78,$9C
Data.b $4D,$94,$69,$50,$5B,$D7,$19,$86,$F5,$D3,$69,$83,$59,$6D,$90,$10
Data.b $20,$B4,$EF,$42,$BA,$92,$D0,$72,$A5,$AB,$7D,$BD,$DA,$D0,$2E,$24
Data.b $B4,$83,$10,$02,$49,$06,$CC,$16,$08,$98,$C5,$32,$C6,$2C,$5E,$B1
Data.b $1D,$EC,$30,$26,$5E,$82,$ED,$86,$C4,$89,$71,$5C,$2F,$6D,$DD,$A6
Data.b $93,$AD,$99,$24,$4D,$D2,$71,$F7,$36,$6D,$33,$89,$DB,$A6,$CB,$74
Data.b $5A,$C7,$69,$0F,$9D,$FE,$E8,$99,$67,$BE,$B9,$F7,$CF,$FB,$9E,$F7
Data.b $FB,$CE,$39,$98,$5C,$3E,$DF,$9B,$CF,$17,$FB,$FB,$87,$46,$47,$27
Data.b $26,$A7,$66,$E6,$4A,$B3,$A5,$D2,$5C,$69,$7E,$7A,$6E,$0E,$7C,$E7
Data.b $0B,$45,$2B,$9F,$33,$58,$48,$7A,$9D,$1A,$EC,$9E,$B2,$26,$5C,$25
Data.b $A1,$7E,$87,$66,$7C,$25,$11,$5F,$49,$C0,$57,$36,$60,$CB,$1B,$B1
Data.b $E5,$B8,$BD,$65,$B8,$3D,$DF,$AC,$A9,$FC,$46,$33,$AE,$82,$55,$5F
Data.b $26,$E0,$90,$3D,$76,$4D,$AE,$33,$10,$0E,$7A,$31,$C9,$74,$A7,$5A
Data.b $AB,$31,$18,$8C,$66,$8B,$D5,$62,$DD,$01,$45,$6D,$26,$B3,$D9,$60
Data.b $30,$84,$42,$91,$44,$3C,$AE,$25,$13,$86,$0A,$09,$AF,$1D,$69,$C2
Data.b $EE,$26,$D4,$57,$90,$1A,$2A,$77,$C0,$83,$5A,$45,$C6,$EF,$40,$AA
Data.b $AF,$6A,$AC,$AB,$68,$AC,$2D,$C3,$EF,$01,$EC,$E6,$E0,$CA,$84,$5C
Data.b $8A,$D7,$A9,$4D,$47,$1C,$76,$AB,$11,$E3,$F5,$FB,$15,$88,$52,$AD
Data.b $D1,$02,$51,$B3,$D5,$6A,$B2,$58,$4C,$66,$8B,$D1,$68,$D2,$E9,$F5
Data.b $C1,$60,$D8,$E7,$72,$A8,$1B,$F1,$83,$7D,$71,$54,$2F,$6E,$C6,$95
Data.b $03,$5D,$4A,$63,$15,$B5,$B1,$9A,$DA,$54,$2D,$61,$37,$CC,$A6,$75
Data.b $CB,$59,$CB,$54,$97,$37,$1D,$70,$D3,$09,$B5,$04,$EC,$6E,$FC,$DE
Data.b $32,$4A,$6D,$99,$0C,$62,$06,$3D,$86,$44,$3B,$AA,$43,$5A,$31,$A1
Data.b $F6,$F6,$40,$30,$D0,$1E,$89,$C4,$13,$C9,$54,$1A,$AC,$CE,$54,$2A
Data.b $1D,$8F,$27,$C1,$6F,$B6,$A7,$D7,$86,$C0,$DA,$46,$5C,$7F,$6F,$87
Data.b $51,$05,$51,$F1,$35,$64,$7C,$0D,$A9,$BE,$9A,$8A,$AF,$06,$D5,$24
Data.b $61,$DC,$3C,$D2,$7B,$79,$D0,$34,$ED,$E3,$94,$12,$AA,$7D,$41,$13
Data.b $83,$80,$6D,$C6,$56,$34,$D5,$55,$48,$21,$66,$BB,$DB,$10,$74,$EB
Data.b $D4,$72,$08,$A3,$54,$21,$52,$B9,$5C,$AE,$50,$68,$75,$7A,$8B,$15
Data.b $05,$21,$8C,$26,$93,$13,$B5,$76,$84,$82,$B9,$A8,$77,$79,$5F,$78
Data.b $7D,$C8,$8B,$B4,$90,$94,$EC,$06,$BF,$B8,$BE,$A8,$C6,$1D,$34,$D7
Data.b $1E,$46,$71,$4B,$11,$D1,$B1,$BC,$77,$C4,$CE,$E8,$D6,$71,$4A,$B9
Data.b $BC,$DF,$6C,$71,$29,$5B,$FA,$23,$28,$CC,$A3,$31,$09,$75,$AC,$66
Data.b $AC,$AA,$95,$AD,$96,$B7,$A8,$64,$7C,$0C,$A2,$56,$C1,$4A,$05,$AC
Data.b $DC,$E9,$92,$D9,$62,$01,$33,$E8,$8E,$06,$87,$7B,$92,$1D,$0E,$5D
Data.b $DE,$D6,$B2,$9A,$81,$37,$C6,$63,$03,$ED,$A6,$FB,$C7,$72,$97,$FA
Data.b $64,$AB,$19,$CD,$4A,$04,$9A,$75,$50,$B6,$0E,$84,$1E,$FD,$60,$7D
Data.b $ED,$40,$FE,$EA,$C9,$C5,$DF,$FD,$E8,$FD,$CD,$E3,$67,$46,$BB,$7B
Data.b $85,$4C,$4A,$D2,$65,$80,$A8,$8D,$CC,$A6,$5A,$60,$C3,$23,$E3,$25
Data.b $7C,$06,$A6,$3B,$9B,$C9,$66,$BB,$7B,$7B,$7B,$73,$BD,$BD,$5D,$5D
Data.b $99,$BE,$74,$FC,$99,$9E,$68,$2E,$84,$C6,$35,$8C,$31,$94,$DC,$AB
Data.b $6E,$18,$76,$70,$EE,$AD,$8D,$BF,$79,$71,$F6,$FA,$6C,$66,$73,$61
Data.b $74,$6B,$6D,$E9,$CA,$4C,$F6,$B9,$E1,$F0,$C6,$64,$E2,$8D,$F5,$D1
Data.b $5B,$6B,$2B,$1F,$DF,$BB,$FD,$F6,$F5,$AD,$4E,$A7,$AE,$D8,$E1,$50
Data.b $0B,$B9,$3E,$BD,$8C,$49,$A8,$A5,$36,$EC,$61,$11,$EA,$04,$B4,$26
Data.b $0C,$2C,$20,$6B,$24,$2C,$23,$22,$B0,$E9,$64,$A9,$76,$CF,$E1,$E1
Data.b $DC,$81,$42,$BA,$D8,$26,$05,$F1,$07,$9D,$A6,$EB,$AB,$AB,$EB,$47
Data.b $A6,$1F,$DE,$39,$F7,$CA,$89,$89,$9F,$DC,$3A,$F7,$60,$F3,$CC,$C6
Data.b $F1,$85,$4F,$5E,$BF,$F0,$60,$7D,$FA,$DB,$27,$8A,$17,$86,$D0,$ED
Data.b $E5,$D4,$5B,$AF,$AC,$3D,$B8,$B6,$B9,$3E,$77,$70,$2E,$13,$F1,$EB
Data.b $A5,$11,$2B,$22,$A2,$13,$38,$44,$2C,$A3,$A9,$96,$DE,$54,$8B,$91
Data.b $F2,$08,$30,$9F,$A8,$84,$C8,$21,$AB,$72,$E5,$D9,$E2,$C2,$58,$7E
Data.b $BC,$37,$D9,$65,$E6,$74,$5A,$F4,$5F,$7C,$F0,$D1,$1F,$7F,$FA,$E3
Data.b $EF,$9C,$9F,$B8,$B9,$9C,$FF,$F0,$D5,$B3,$5F,$7E,$74,$EF,$A3,$1B
Data.b $A7,$D7,$66,$06,$1E,$DE,$D9,$F8,$D5,$F7,$AF,$7E,$F8,$CA,$E9,$E7
Data.b $07,$6D,$37,$E7,$5C,$9B,$73,$51,$AB,$8C,$1B,$6F,$B3,$16,$42,$D6
Data.b $4C,$00,$0D,$9B,$61,$B7,$1E,$E1,$53,$F0,$5C,$12,$8E,$45,$C4,$01
Data.b $83,$66,$79,$0B,$51,$C1,$27,$95,$06,$3A,$4F,$CF,$0D,$1F,$1C,$CE
Data.b $8F,$A5,$5C,$02,$1A,$E1,$AD,$57,$B7,$EF,$5F,$79,$E1,$CD,$AD,$E3
Data.b $6F,$9C,$CD,$6E,$4E,$85,$3F,$7E,$7D,$E3,$D3,$EF,$5D,$FA,$C9,$2B
Data.b $4B,$57,$0E,$C4,$7E,$76,$F3,$C4,$2F,$EF,$6D,$AC,$1C,$18,$99,$2C
Data.b $74,$AD,$F5,$3B,$1E,$AC,$04,$A7,$22,$8A,$84,$81,$AD,$17,$D1,$29
Data.b $CD,$F8,$A0,$45,$8D,$AA,$61,$60,$C0,$A7,$36,$B4,$90,$F1,$18,$59
Data.b $4B,$33,$0C,$0C,$04,$E4,$D9,$7D,$E9,$A3,$13,$85,$67,$73,$51,$88
Data.b $DE,$5C,$1A,$CC,$17,$C2,$9E,$A0,$46,$78,$EB,$68,$E7,$F6,$A1,$C8
Data.b $F2,$48,$76,$A4,$2F,$F3,$C9,$AD,$73,$EF,$5C,$9E,$BB,$30,$1E,$FA
Data.b $F9,$AD,$D5,$BF,$BE,$77,$3D,$68,$D5,$E4,$B2,$3D,$17,$4F,$94,$D6
Data.b $87,$5C,$F7,$E7,$5D,$5E,$98,$56,$55,$B6,$AB,$E2,$E9,$5D,$22,$36
Data.b $D5,$8A,$C8,$78,$24,$1C,$44,$6F,$84,$A8,$0D,$18,$39,$0F,$18,$34
Data.b $23,$10,$39,$E5,$31,$2D,$8F,$17,$DD,$5A,$09,$B9,$11,$1B,$B6,$48
Data.b $93,$3A,$EA,$91,$AC,$F9,$83,$F3,$5D,$77,$57,$47,$CE,$9F,$3A,$AA
Data.b $45,$90,$B7,$BF,$75,$EC,$BD,$EB,$2B,$37,$CF,$CC,$3C,$BC,$7B,$E9
Data.b $F3,$77,$6F,$84,$1C,$D6,$B0,$CF,$AF,$84,$F8,$09,$9F,$EB,$4C,$4E
Data.b $21,$21,$57,$55,$94,$ED,$AA,$7C,$7A,$17,$6E,$4F,$65,$A4,$CD,$DE
Data.b $58,$5B,$21,$A4,$37,$89,$68,$8D,$18,$98,$4F,$02,$FD,$51,$08,$88
Data.b $5A,$31,$7D,$30,$E5,$87,$F9,$0C,$6C,$4D,$D9,$DE,$CA,$6F,$06,$54
Data.b $AC,$1F,$1C,$8B,$5C,$1D,$B3,$1C,$79,$A6,$18,$F6,$78,$22,$81,$E0
Data.b $F3,$0B,$93,$BF,$F9,$E1,$8D,$B7,$6E,$6E,$3E,$FC,$E1,$ED,$37,$6E
Data.b $5C,$F1,$D9,$6C,$93,$53,$0B,$43,$93,$45,$8F,$DD,$9E,$D0,$51,$C5
Data.b $C4,$8A,$EA,$DD,$4F,$11,$EA,$2A,$B8,$24,$2C,$09,$57,$5D,$5B,$F9
Data.b $B4,$80,$DA,$D0,$CA,$6C,$C2,$80,$01,$28,$05,$24,$15,$44,$46,$20
Data.b $4A,$D8,$2C,$93,$F3,$99,$D5,$E5,$4F,$D5,$54,$3C,$45,$C1,$55,$DE
Data.b $9E,$43,$8B,$7E,$8D,$C7,$6C,$DC,$3F,$37,$51,$4C,$64,$FA,$52,$A9
Data.b $F7,$5E,$BF,$7A,$ED,$C4,$81,$73,$F3,$63,$17,$4E,$2E,$E6,$3B,$3B
Data.b $B3,$C1,$76,$BF,$4E,$AE,$95,$8A,$A3,$6A,$22,$44,$28,$6F,$AC,$2D
Data.b $97,$B2,$09,$30,$97,$08,$3C,$1A,$F6,$96,$8B,$E8,$8D,$12,$26,$01
Data.b $1C,$53,$B0,$7D,$92,$52,$48,$D2,$88,$69,$9D,$5E,$33,$97,$4A,$A8
Data.b $DA,$BD,$AB,$BE,$A6,$4C,$48,$AB,$3F,$9F,$87,$15,$3C,$52,$C2,$EB
Data.b $DB,$17,$0F,$65,$9C,$AE,$85,$A9,$03,$2F,$9D,$2E,$BD,$70,$78,$60
Data.b $2A,$17,$1D,$4D,$F9,$8A,$D9,$6C,$2A,$18,$1A,$CA,$17,$63,$4E,$FD
Data.b $4C,$58,$24,$22,$56,$50,$F0,$35,$E0,$CE,$23,$7C,$92,$94,$D5,$44
Data.b $C3,$D7,$88,$99,$4D,$32,$0E,$11,$83,$08,$C9,$4A,$88,$A4,$15,$53
Data.b $51,$65,$4B,$3A,$E0,$6C,$A1,$60,$F7,$54,$3C,$C5,$6E,$AE,$35,$C9
Data.b $E8,$D3,$61,$41,$CE,$C6,$0B,$DA,$4D,$E1,$36,$77,$4F,$3C,$31,$3D
Data.b $B2,$BF,$D4,$1B,$7C,$7E,$B6,$30,$1C,$77,$24,$50,$04,$55,$29,$0E
Data.b $1F,$2C,$9D,$5C,$5E,$D9,$1F,$75,$AC,$15,$75,$10,$B1,$8A,$D1,$B4
Data.b $57,$03,$51,$D4,$02,$B2,$92,$47,$02,$CD,$91,$72,$88,$30,$97,$84
Data.b $01,$EA,$08,$44,$D2,$49,$A8,$26,$39,$C3,$20,$65,$C0,$3C,$42,$63
Data.b $ED,$6E,$25,$9F,$68,$81,$99,$CF,$46,$24,$97,$47,$CD,$87,$F7,$85
Data.b $4F,$2D,$2F,$1F,$5B,$5C,$9E,$2C,$E4,$C6,$92,$BE,$E3,$53,$03,$4B
Data.b $23,$99,$E1,$6C,$AA,$3B,$E4,$CB,$C4,$E2,$53,$C3,$83,$13,$49,$F3
Data.b $A5,$31,$0B,$BB,$A1,$02,$5C,$60,$60,$A0,$15,$52,$D4,$10,$05,$69
Data.b $21,$2B,$78,$44,$50,$31,$9A,$56,$AA,$5E,$42,$33,$C8,$69,$66,$98
Data.b $01,$90,$B0,$1A,$28,$F8,$2A,$14,$66,$39,$54,$9C,$01,$BF,$E4,$C1
Data.b $D1,$D0,$D1,$82,$E3,$C4,$DC,$F8,$C1,$C9,$A9,$13,$87,$0E,$AE,$2D
Data.b $CC,$BE,$BE,$F5,$D2,$E5,$E7,$CE,$9C,$58,$5A,$9C,$1D,$1E,$4A,$45
Data.b $22,$49,$BF,$73,$3C,$AA,$3E,$96,$81,$19,$B8,$72,$F0,$F8,$E8,$44
Data.b $34,$43,$2B,$5D,$2B,$A2,$EA,$44,$74,$B5,$80,$A2,$E2,$53,$30,$06
Data.b $19,$DD,$28,$A3,$03,$69,$0B,$CC,$B0,$21,$2C,$01,$15,$DB,$CA,$C4
Data.b $3B,$D5,$5C,$97,$96,$D7,$ED,$12,$DF,$59,$F0,$6F,$4E,$38,$4B,$FB
Data.b $A2,$43,$B9,$CC,$FC,$CC,$CC,$C6,$D9,$33,$BF,$FF,$F4,$0F,$8F,$3E
Data.b $7F,$74,$7B,$FB,$DB,$F9,$6C,$CE,$DF,$E6,$72,$68,$E4,$31,$2D,$6B
Data.b $C4,$DB,$E2,$91,$93,$B9,$A4,$3A,$93,$84,$6E,$94,$30,$40,$35,$88
Data.b $E9,$3A,$21,$4D,$0D,$51,$81,$01,$CD,$28,$67,$58,$95,$2C,$80,$0D
Data.b $61,$5B,$15,$0C,$87,$8A,$ED,$D6,$72,$DB,$B4,$DC,$84,$4D,$F8,$5A
Data.b $C9,$7F,$6D,$C2,$BA,$D8,$E7,$E8,$EE,$08,$8D,$EE,$1F,$3E,$7E,$F4
Data.b $E4,$97,$5F,$FE,$FD,$AB,$AF,$9E,$3C,$7C,$F8,$AB,$43,$07,$0F,$07
Data.b $FD,$01,$A5,$44,$EC,$51,$B2,$9F,$09,$CB,$0E,$A5,$B5,$3C,$12,$D6
Data.b $2A,$63,$5A,$E5,$00,$96,$59,$CA,$D2,$83,$28,$10,$05,$63,$94,$D3
Data.b $2D,$4A,$E6,$7F,$D5,$59,$76,$84,$E5,$50,$73,$DA,$FE,$AB,$EE,$D1
Data.b $71,$43,$26,$E1,$CB,$07,$FD,$CF,$15,$75,$F3,$69,$8D,$17,$35,$82
Data.b $67,$F7,$E2,$0B,$9B,$73,$B3,$0B,$85,$9E,$7E,$97,$DD,$63,$D4,$19
Data.b $93,$B1,$24,$87,$49,$67,$36,$D7,$97,$BA,$AD,$4B,$19,$3D,$44,$C3
Data.b $A3,$30,$DB,$22,$67,$A2,$72,$96,$45,$CA,$32,$4A,$E9,$7A,$11,$0D
Data.b $63,$56,$30,$50,$84,$85,$EE,$48,$B3,$DB,$B4,$1C,$B0,$77,$AF,$81
Data.b $B7,$83,$8E,$D7,$6E,$11,$7D,$EF,$FC,$10,$30,$18,$F1,$89,$D5,$12
Data.b $68,$FF,$C0,$60,$D0,$17,$72,$3B,$DC,$99,$74,$B6,$3F,$3F,$88,$1A
Data.b $2D,$3E,$B7,$8F,$4D,$A7,$D7,$ED,$A9,$FA,$D6,$CA,$BE,$3E,$1B,$9F
Data.b $43,$AC,$73,$28,$39,$36,$98,$65,$83,$D9,$20,$84,$45,$CE,$32,$49
Data.b $19,$18,$BB,$9A,$0D,$D4,$6D,$2A,$96,$53,$C3,$76,$69,$B9,$6E,$3D
Data.b $CF,$6F,$E4,$FB,$8C,$2D,$01,$B3,$20,$6A,$97,$7E,$77,$63,$F6,$F6
Data.b $B1,$4E,$14,$22,$8A,$79,$8C,$64,$47,$2C,$E8,$F1,$77,$26,$BA,$56
Data.b $4F,$9E,$9B,$99,$2A,$59,$35,$7A,$BD,$52,$25,$E0,$70,$B0,$B5,$D5
Data.b $57,$E6,$73,$3E,$29,$91,$D1,$B4,$C7,$89,$70,$1D,$C8,$8E,$07,$08
Data.b $81,$2A,$38,$16,$19,$13,$E3,$D6,$F3,$DB,$74,$3C,$B7,$9E,$EB,$D6
Data.b $71,$DD,$06,$9E,$CF,$C8,$0F,$9A,$05,$21,$8B,$30,$64,$15,$76,$D8
Data.b $C4,$57,$97,$FA,$BF,$7F,$65,$C1,$28,$A6,$71,$68,$24,$AD,$4A,$D3
Data.b $E1,$0D,$A4,$3C,$DE,$B0,$DB,$EF,$B1,$B7,$65,$BC,$BE,$74,$47,$A2
Data.b $85,$CD,$69,$C2,$D7,$1D,$EB,$F7,$68,$59,$B5,$6C,$52,$5D,$9B,$A6
Data.b $C5,$AB,$13,$80,$EA,$54,$71,$6D,$C0,$49,$C1,$C6,$F8,$CD,$42,$9F
Data.b $51,$E0,$33,$81,$5D,$03,$5D,$28,$64,$86,$22,$A8,$30,$82,$8A,$23
Data.b $36,$71,$D4,$21,$BD,$7F,$6E,$F2,$E5,$B3,$33,$4E,$25,$57,$02,$41
Data.b $7E,$AF,$6F,$7A,$7C,$6A,$7F,$5F,$BF,$C3,$64,$D5,$23,$9A,$C9,$B1
Data.b $D9,$ED,$ED,$7B,$A9,$64,$8A,$48,$20,$5C,$3A,$10,$87,$29,$35,$E0
Data.b $9D,$F0,$68,$77,$0C,$00,$6E,$2D,$DF,$A5,$6E,$71,$20,$5C,$4C,$10
Data.b $15,$05,$AD,$00,$61,$C4,$2E,$89,$3A,$64,$1D,$F6,$D6,$84,$53,$1A
Data.b $73,$49,$63,$0E,$49,$C2,$25,$7B,$FF,$A5,$E5,$0B,$8B,$23,$76,$9D
Data.b $4C,$A5,$50,$4E,$4E,$4C,$AD,$1E,$5F,$9D,$1A,$9F,$8E,$05,$C3,$C1
Data.b $36,$DF,$C2,$74,$E9,$B5,$AD,$9B,$E3,$63,$E3,$0D,$38,$DC,$44,$44
Data.b $41,$C7,$96,$23,$02,$92,$DF,$C0,$0F,$18,$21,$9F,$5E,$00,$70,$6B
Data.b $F8,$20,$0A,$26,$84,$8A,$DB,$51,$71,$D8,$D6,$0A,$A4,$A3,$4E,$49
Data.b $CC,$25,$4B,$BA,$E1,$B4,$5B,$91,$6A,$93,$A7,$3D,$8A,$4F,$6E,$9D
Data.b $3A,$33,$9D,$33,$22,$AD,$6C,$26,$73,$64,$F8,$99,$E1,$E2,$C0,$99
Data.b $85,$A5,$E3,$B3,$A5,$91,$5C,$61,$F3,$B9,$F3,$4B,$B3,$F3,$85,$9E
Data.b $3E,$7C,$DD,$DE,$A9,$F6,$56,$3A,$BE,$5A,$2F,$A6,$05,$4C,$50,$C0
Data.b $24,$F4,$9B,$84,$20,$84,$6F,$07,$68,$27,$C1,$4E,$37,$9C,$92,$0E
Data.b $87,$24,$EE,$92,$01,$D1,$6E,$BF,$2A,$E3,$57,$75,$7A,$E0,$8C,$0F
Data.b $79,$EB,$F2,$DC,$FA,$A1,$82,$45,$2D,$61,$52,$29,$B9,$4C,$0F,$78
Data.b $91,$16,$27,$A7,$EF,$6D,$DF,$FD,$F0,$BD,$1F,$BF,$7A,$75,$EB,$D9
Data.b $E1,$09,$97,$CD,$41,$C6,$55,$1F,$89,$40,$3A,$3E,$01,$8C,$37,$64
Data.b $06,$ED,$95,$84,$CC,$A2,$A0,$51,$E8,$37,$80,$28,$10,$A6,$C3,$25
Data.b $8B,$ED,$20,$4D,$B6,$C1,$29,$0F,$DC,$E5,$53,$66,$02,$2A,$E0,$D1
Data.b $ED,$53,$02,$EE,$AF,$8D,$BC,$76,$7A,$CC,$87,$6A,$04,$5C,$26,$2C
Data.b $95,$ED,$2F,$0C,$AC,$AF,$9E,$BD,$F3,$E2,$D6,$DD,$6B,$37,$1F,$BC
Data.b $7A,$EB,$83,$B7,$DF,$69,$F7,$78,$0E,$65,$D0,$CD,$21,$43,$BB,$8A
Data.b $D1,$A6,$E5,$C5,$EC,$92,$B8,$53,$16,$B1,$B6,$FA,$0D,$C2,$A0,$49
Data.b $14,$30,$8A,$30,$31,$37,$9C,$70,$C3,$49,$8F,$22,$ED,$43,$32,$01
Data.b $24,$1B,$54,$F5,$84,$34,$B9,$90,$7A,$A7,$B6,$EB,$B6,$96,$FA,$7E
Data.b $71,$FB,$78,$6F,$CC,$D3,$9B,$49,$25,$A2,$1D,$8B,$F3,$F3,$5F,$7C
Data.b $FE,$C5,$E3,$C7,$8F,$BF,$7E,$F2,$F5,$EF,$3F,$FD,$6C,$65,$76,$FE
Data.b $50,$21,$72,$7F,$29,$BD,$3D,$EB,$E1,$34,$56,$BB,$34,$FF,$33,$00
Data.b $B3,$0C,$59,$C5,$41,$93,$10,$E4,$C0,$A4,$3C,$0A,$A0,$DE,$05,$B6
Data.b $1C,$D2,$F4,$45,$F4,$7D,$11,$43,$6F,$44,$9F,$8F,$E8,$0B,$11,$FD
Data.b $60,$DC,$F4,$C1,$CB,$8B,$BF,$BE,$73,$F2,$C6,$F9,$F9,$3F,$3D,$7A
Data.b $F4,$E7,$3F,$7D,$F1,$E4,$C9,$93,$AF,$1E,$3F,$FE,$EC,$B7,$BF,$BE
Data.b $B6,$71,$71,$61,$62,$F4,$EE,$8B,$A7,$BE,$7C,$F7,$DA,$F6,$B4,$7B
Data.b $75,$22,$17,$B7,$23,$36,$05,$2B,$05,$DA,$E0,$56,$24,$DB,$14,$E0
Data.b $0E,$45,$AC,$12,$00,$26,$0D,$3A,$1E,$D4,$74,$87,$B4,$3D,$61,$5D
Data.b $3E,$66,$CA,$47,$8D,$FB,$12,$96,$42,$CC,$38,$90,$B4,$1E,$D9,$1F
Data.b $FC,$EC,$C1,$E9,$BF,$BD,$7F,$E5,$C6,$B9,$F9,$7F,$FE,$E3,$1F,$FF
Data.b $FE,$BF,$F5,$F5,$57,$FF,$FA,$CB,$4F,$DF,$F9,$EB,$C7,$77,$FF,$FC
Data.b $E6,$C5,$F5,$21,$67,$2A,$96,$7A,$F7,$E5,$53,$FD,$11,$5D,$76,$67
Data.b $7E,$EA,$2E,$9F,$2A,$E5,$56,$46,$C1,$B1,$B4,$C9,$FE,$03,$57,$58
Data.b $30,$31,$4C,$FD,$20,$E8,$00,$00,$00,$00,$49,$45,$4E,$44,$AE,$42
Data.b $60,$82
EndDataSection
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

srod is the man when it comes to ListIconGadgets Mistrel. Maybe he'll swing by and give you some help. If not, I'll have some free time tomorrow to take a look. :)
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
User avatar
blueznl
PureBasic Expert
PureBasic Expert
Posts: 6166
Joined: Sat May 17, 2003 11:31 am
Contact:

Post by blueznl »

I can only help adding some WinApi message stuff, sorry, no good solution but perhaps it may help...

Code: Select all

Procedure.l x_getlisticontopline(gadget_nr.l)                        ; what entry is currently shown on first line of a listicongadget
  Global x_retval.l
  ;
  ; *** get the item number of the first visible line at the top of a listicon gadget
  ;
  x_retval = SendMessage_(GadgetID(gadget_nr),#LVM_GETTOPINDEX,0,0)
  ProcedureReturn x_retval
EndProcedure

Procedure.l x_getlisticonnextselected(gadget_nr.l, startpos.l)       ; find the next selected entry in a listicongadget
  Global x_retval.l
  ;
  ; *** find the next selected entry in a listicongadget
  ;
  ; in:     gadget_nr.l       - pb listicongadget number
  ;         startpos.l = -1   - start at the top
  ;                    = n    - start searching from the specified entry
  ; retval: n                 - number of entry found
  ;         -1                - no more found
  ;
  If startpos = -1
    x_retval = SendMessage_(GadgetID(gadget_nr),#LVM_GETNEXTITEM,-1,#LVNI_SELECTED)
  Else
    x_retval = SendMessage_(GadgetID(gadget_nr),#LVM_GETNEXTITEM,startpos,#LVNI_SELECTED|#LVNI_BELOW)
  EndIf
  ProcedureReturn x_retval
EndProcedure

Procedure x_setlisticonvisibleline(gadget_nr.l,position.l)           ; make sure line n is visible
  SendMessage_(GadgetID(gadget_nr),#LVM_ENSUREVISIBLE,position,0)
EndProcedure

Procedure x_setlisticontopline(gadget_nr.l,position.l)               ; show line n as topline in listicon gadget
  ;
  ; *** selected line will become first line in gadget
  ;
  SendMessage_(GadgetID(gadget_nr),#LVM_ENSUREVISIBLE,position,0)
  position = 2*position-SendMessage_(GadgetID(gadget_nr),#LVM_GETTOPINDEX,0,0)
  SendMessage_(GadgetID(gadget_nr),#LVM_ENSUREVISIBLE,position,0)
EndProcedure
( PB6.00 LTS Win11 x64 Asrock AB350 Pro4 Ryzen 5 3600 32GB GTX1060 6GB)
( The path to enlightenment and the PureBasic Survival Guide right here... )
Mistrel
Addict
Addict
Posts: 3415
Joined: Sat Jun 30, 2007 8:04 pm

Post by Mistrel »

From what I understand from my research it's not possible to remove the icons from the left-most column, change its text justification, and possibly other things as well.

So I think my best option would be to hide the first column so all of the visible columns will react identically.

I am using DoubleDutch's excellent code for this:
http://www.purebasic.fr/english/viewtopic.php?t=17266

However, to make this solution "perfect" how can I prevent the mouse cursor from changing to the "you can resize this column" icon for column 0?

Here is the source for what I have so far:

Code: Select all

#MainWindow=0
#ListIconGadget1=1
#Font=5

#LVM_SETEXTENDEDLISTVIEWSTYLE=4150
#LVS_EX_SUBITEMIMAGES=2

UsePNGImageDecoder()
UseJPEGImageDecoder()

Procedure ExtendListCallback(hWnd, uMsg, wParam, lParam) 
	Result=#PB_ProcessPureBasicEvents
	If uMsg=#WM_NOTIFY
		*nmhdr.NMHEADER=lParam
		If *nmhdr\hdr\code=#HDN_ITEMCHANGING And *nmhdr\iItem=0
			*nmdata.HD_ITEM=*nmhdr\pitem
			*nmdata\cxy=0
		EndIf
	EndIf
	ProcedureReturn Result
EndProcedure
  
Procedure ExtendListIconGadget(hListIcon, IconWidth, IconHeight, ParentWindowID)
	hImageList=ImageList_Create_(IconWidth,IconHeight,#ILC_MASK|#ILC_COLOR32,0,100)
	; Assign the image list to the listicongadget
	SendMessage_(hListIcon,#LVM_SETIMAGELIST,#LVSIL_SMALL,hImageList)
	
	; Set background color to CLR_NONE so images are drawn transparently using the mask
	ImageList_SetBkColor_(hImageList,#CLR_NONE)
	
	; Set extended style to the listicongadget to allow images for subitems
	SendMessage_(hListIcon,#LVM_SETEXTENDEDLISTVIEWSTYLE,#LVS_EX_SUBITEMIMAGES,#LVS_EX_SUBITEMIMAGES)
	
	; Set the width of column 0 to 0 pixels
	lvcolumn.LVCOLUMN\mask=#LVCF_WIDTH
	lvcolumn.LVCOLUMN\cx=0 ; width
	SendMessage_(GadgetID(#ListIconGadget1),#LVM_SETCOLUMN,0,@lvcolumn.LVCOLUMN)
	
	; Set the window callback for the listicon gadget's parent window to capture resize messages
	SetWindowCallback(@ExtendListCallback(),ParentWindowID)
	
	ProcedureReturn hImageList
EndProcedure

Procedure AddImageListElement(hImageList, hImage, hImageMask)
	ImageIndex=ImageList_Add_(hImageList,hImage,hImageMask)
	ProcedureReturn ImageIndex
EndProcedure

; Procedure ResizeImageList(hImageList, Width, Height)
; 
; EndProcedure

Procedure SetListIconElement(hListIcon, ImageListIndex, Row, Column, Text.s, ReplaceText)
	Var.LV_ITEM
	Var\mask=#LVIF_IMAGE
	If ReplaceText=1
		Var\mask|#LVIF_TEXT
	EndIf
	Var\iItem=Row ; row number for change
	Var\iSubItem=Column ; column
	Var\iImage=ImageListIndex; index of icon in the list
	Var\pszText=@Text.s ; text
	SendMessage_(hListIcon,#LVM_SETITEM,0,@Var)
EndProcedure

If OpenWindow(#MainWindow,0,0,320,240,"Icon List",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
	CreateGadgetList(WindowID(#MainWindow))
	ListIconGadget(#ListIconGadget1,0,0,320,240,"Original",298/3,#PB_ListIcon_FullRowSelect)
	hImageList=ExtendListIconGadget(GadgetID(#ListIconGadget1),32,32,#MainWindow)
	
	AddGadgetColumn(#ListIconGadget1,1,"Column 1",298/3)
	AddGadgetColumn(#ListIconGadget1,2,"Column 2",298/3)
	AddGadgetColumn(#ListIconGadget1,3,"Column 3",298/3)
	
	FontID=LoadFont(#Font,"ARIAL",9)
	SetGadgetFont(#ListIconGadget1,FontID)
	
	For i=0 To 4
		; When using ExtendListIconGadget, text added using AddGadgetItem is placed into column 0 and is not visible.
		; Use SetGadgetItemText to set the text for the first visible row
		AddGadgetItem(#ListIconGadget1,i,"")
	Next i
	
	ImageID=CatchImage(#PB_Any,?MyImage)
	ImageIndex=AddImageListElement(hImageList,ImageID(ImageID),0)
	If ImageIndex=-1
		Debug "Failed to load image"
	EndIf
	FreeImage(ImageID)

	For i=0 To 4
		SetGadgetItemText(#ListIconGadget1,i,"Item "+Str(i),1)
		SetGadgetItemText(#ListIconGadget1,i,"Item "+Str(i),2)
		SetGadgetItemText(#ListIconGadget1,i,"Item "+Str(i),3)
	Next i
	
	For i=1 To 3
		SetListIconElement(GadgetID(#ListIconGadget1),ImageIndex,i,1,"Alt "+Str(i),1)
	Next
	
	For i=0 To 2
		SetListIconElement(GadgetID(#ListIconGadget1),ImageIndex,i,2,"Alt "+Str(i),1)
	Next
	
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
			Quit=1
		EndSelect
	Until Quit
	If HwndIm_List
		 ImageList_Destroy_(HwndIm_List)
	EndIf
EndIf

End

DataSection
	MyImage:
	Data.b $89,$50,$4E,$47,$0D,$0A,$1A,$0A,$00,$00,$00,$0D,$49,$48,$44,$52,$00,$00,$00,$20
	Data.b $00,$00,$00,$20,$08,$02,$00,$00,$00,$FC,$18,$ED,$A3,$00,$00,$00,$19,$74,$45,$58
	Data.b $74,$53,$6F,$66,$74,$77,$61,$72,$65,$00,$41,$64,$6F,$62,$65,$20,$49,$6D,$61,$67
	Data.b $65,$52,$65,$61,$64,$79,$71,$C9,$65,$3C,$00,$00,$0A,$42,$49,$44,$41,$54,$78,$DA
	Data.b $3C,$96,$69,$8C,$DC,$65,$1D,$C7,$9F,$EB,$7F,$CF,$BD,$33,$BB,$33,$7B,$75,$EF,$ED
	Data.b $F6,$58,$B6,$F6,$A2,$85,$16,$52,$6A,$A0,$05,$11,$0A,$22,$09,$8D,$45,$63,$D4,$F8
	Data.b $42,$34,$51,$63,$E2,$1B,$49,$78,$E3,$2B,$13,$63,$D2,$17,$92,$18,$40,$31,$46,$42
	Data.b $03,$8D,$10,$85,$0A,$2D,$2D,$F4,$DA,$A5,$ED,$DE,$67,$DB,$9D,$99,$EE,$EE,$CC,$EC
	Data.b $DC,$F3,$BF,$9F,$E7,$F1,$99,$42,$7C,$F2,$64,$32,$93,$3C,$F3,$3C,$BF,$F3,$F3,$FD
	Data.b $C1,$DF,$FE,$EE,$34,$80,$04,$00,$0E,$C4,$E2,$90,$03,$E4,$52,$AA,$06,$23,$D9,$D9
	Data.b $89,$1B,$E7,$FE,$01,$10,$A1,$C0,$F6,$20,$85,$58,$82,$9C,$42,$CA,$90,$38,$C3,$39
	Data.b $96,$14,$00,$30,$24,$CC,$F1,$6D,$85,$18,$1A,$94,$AA,$0E,$62,$18,$63,$BF,$1E,$6B
	Data.b $ED,$1A,$79,$F0,$B1,$60,$24,$0E,$20,$E0,$CC,$25,$1C,$E1,$58,$4B,$07,$E3,$14,$50
	Data.b $08,$31,$A2,$8C,$71,$62,$14,$B2,$4B,$4B,$17,$DF,$23,$66,$89,$6B,$01,$1B,$98,$12
	Data.b $51,$3A,$62,$51,$E6,$D3,$5A,$B9,$62,$BA,$1E,$04,$0C,$B8,$35,$CB,$03,$94,$60,$99
	Data.b $23,$8B,$6E,$52,$2D,$4C,$80,$E6,$9A,$55,$13,$1B,$2C,$9B,$AD,$E6,$F3,$1D,$7D,$23
	Data.b $98,$48,$85,$8D,$55,$02,$9B,$C7,$A9,$D8,$00,$62,$C8,$A1,$4B,$A1,$5D,$B9,$37,$FD
	Data.b $D1,$1B,$76,$F9,$9E,$62,$04,$5B,$12,$81,$64,$5B,$BB,$A4,$06,$6F,$CC,$64,$30,$86
	Data.b $B1,$54,$C8,$A9,$D4,$1B,$96,$2D,$31,$42,$98,$6B,$D9,$9E,$05,$91,$C4,$A9,$5F,$2F
	Data.b $21,$59,$83,$50,$C7,$AC,$5E,$75,$02,$F3,$E3,$97,$3A,$06,$06,$A3,$89,$0E,$08,$20
	Data.b $12,$8E,$34,$B7,$88,$0E,$01,$0C,$13,$B7,$92,$CF,$5F,$7E,$CB,$DE,$98,$97,$64,$D5
	Data.b $E1,$54,$22,$34,$16,$8D,$CE,$2D,$AF,$2E,$CD,$CE,$AF,$DD,$9E,$BB,$7D,$AF,$D0,$1E
	Data.b $0E,$F9,$18,$6E,$BA,$B6,$09,$7D,$9D,$00,$8F,$B2,$2A,$47,$45,$CF,$A4,$CE,$86,$C9
	Data.b $0D,$CF,$35,$55,$CD,$CF,$E5,$AB,$73,$D7,$3F,$83,$DC,$43,$50,$DC,$8A,$01,$40,$40
	Data.b $78,$01,$98,$B0,$0A,$5A,$E9,$8B,$4B,$B7,$AE,$6C,$56,$3C,$2A,$29,$36,$F0,$59,$9E
	Data.b $6C,$D4,$16,$47,$C2,$CE,$AF,$5E,$3B,$1A,$09,$46,$E6,$27,$F3,$A6,$2B,$DC,$08,$9F
	Data.b $99,$9A,$A3,$D4,$41,$12,$09,$30,$BF,$E1,$03,$8A,$B5,$B2,$6F,$C7,$8D,$FA,$EE,$C1
	Data.b $AD,$97,$57,$72,$44,$D1,$56,$A6,$A6,$07,$C6,$0E,$C8,$9A,$42,$9A,$B9,$45,$C2,$7E
	Data.b $00,$25,$19,$D5,$32,$9B,$4B,$D7,$D6,$F3,$95,$BC,$47,$3A,$E2,$AC,$B7,$85,$EC,$1A
	Data.b $EE,$38,$B1,$BF,$63,$F4,$C9,$3D,$38,$11,$14,$75,$B0,$6F,$7F,$E1,$F2,$07,$D3,$6F
	Data.b $DF,$5A,$27,$18,$CB,$44,$F3,$19,$4B,$C4,$C2,$7E,$A5,$6A,$39,$A0,$E1,$B1,$EF,$6F
	Data.b $93,$B7,$44,$D4,$F1,$34,$F1,$61,$DD,$B4,$61,$7A,$69,$66,$E0,$81,$DD,$F7,$3D,$C0
	Data.b $00,$21,$E4,$51,$AE,$54,$97,$EB,$95,$6A,$C6,$65,$41,$89,$1F,$1A,$0A,$1C,$3D,$B4
	Data.b $6B,$6F,$DC,$68,$EF,$4B,$31,$0A,$9C,$AA,$C3,$09,$92,$DA,$93,$0F,$7E,$47,$7E,$32
	Data.b $B3,$F6,$E7,$F3,$35,$04,$65,$97,$7A,$25,$97,$CA,$9A,$5C,$B0,$1A,$03,$6D,$E1,$AD
	Data.b $11,$6D,$7C,$71,$D1,$40,$4A,$D1,$2D,$77,$8D,$3C,$E4,$58,$8E,$6B,$D6,$88,$04,$81
	Data.b $22,$DE,$80,$C8,$71,$DD,$84,$EA,$7A,$9E,$5F,$63,$A0,$2F,$1A,$3E,$72,$60,$7F,$E7
	Data.b $50,$CA,$80,$0E,$85,$BA,$57,$54,$20,$D2,$A0,$E7,$7B,$BC,$86,$43,$F8,$E5,$53,$47
	Data.b $4D,$86,$DE,$FB,$7C,$D9,$A2,$54,$14,$9F,$84,$20,$26,$B8,$3D,$AA,$65,$73,$25,$43
	Data.b $02,$01,$02,$33,$75,$27,$1C,$0C,$76,$0F,$0C,$5B,$96,$25,$D2,$00,$10,$07,$9C,$D3
	Data.b $90,$A6,$E8,$A9,$DE,$62,$CD,$12,$29,$2F,$79,$BE,$A2,$EB,$12,$64,$4C,$8F,$F9,$24
	Data.b $0E,$81,$0C,$D6,$2D,$50,$31,$D5,$08,$02,$B2,$51,$47,$81,$44,$3C,$D4,$2D,$6E,$72
	Data.b $1C,$CE,$A0,$08,$97,$2A,$CB,$73,$6B,$95,$D5,$9A,$13,$55,$B5,$56,$03,$F9,$90,$38
	Data.b $8D,$62,$2C,$DE,$4A,$24,$89,$34,$13,$20,$6A,$88,$72,$88,$68,$23,$D8,$87,$43,$6D
	Data.b $0A,$28,$94,$1B,$E6,$5C,$7A,$AD,$AF,$27,$A9,$27,$FA,$90,$E8,$0D,$DF,$F7,$2D,$53
	Data.b $57,$CC,$CD,$05,$EB,$2F,$EF,$8E,$5F,$B8,$34,$AF,$02,$1A,$D0,$F4,$B8,$22,$DF,$B6
	Data.b $EC,$B0,$1E,$D2,$55,$5E,$AF,$99,$E9,$9A,$9B,$D2,$14,$66,$89,$D6,$93,$D6,$36,$E6
	Data.b $D3,$2B,$93,$89,$8E,$1E,$D4,$EC,$60,$91,$61,$D1,$9F,$D4,$77,$81,$12,$EF,$DB,$61
	Data.b $00,$E0,$39,$74,$7E,$BD,$EA,$95,$4B,$CE,$FA,$0A,$0E,$71,$12,$95,$11,$B4,$2E,$5E
	Data.b $99,$FC,$E1,$AF,$DF,$7C,$FB,$EC,$65,$5E,$B5,$2A,$65,$5B,$23,$78,$7B,$6F,$94,$88
	Data.b $98,$7A,$BE,$2E,$23,$45,$42,$63,$3D,$49,$06,$99,$EB,$38,$B6,$EF,$7B,$76,$B5,$90
	Data.b $BB,$83,$88,$48,$6E,$33,$CB,$90,$71,$CE,$28,$73,$7D,$D6,$3F,$BA,$2F,$28,$4B,$0A
	Data.b $A7,$E9,$0D,$F3,$B6,$0B,$16,$33,$59,$93,$99,$5E,$08,$CE,$4C,$4D,$9D,$7E,$E3,$E3
	Data.b $52,$D9,$6E,$EF,$6C,$BF,$87,$81,$A5,$4B,$8F,$EE,$1D,$DA,$33,$90,$92,$31,$B7,$3D
	Data.b $1A,$24,$92,$80,$07,$C6,$A4,$2B,$16,$C9,$5B,$E2,$7A,$CB,$73,$3D,$86,$28,$51,$30
	Data.b $51,$10,$11,$1E,$61,$0C,$64,$04,$08,$F6,$BB,$FB,$06,$FA,$86,$86,$D2,$2B,$B3,$B9
	Data.b $62,$F5,$CC,$BF,$AE,$CA,$C0,$B5,$FE,$33,$B5,$7B,$6B,$C7,$A3,$21,$3E,$BC,$A5,$2D
	Data.b $98,$AF,$9B,$8E,$D9,$3F,$10,$DF,$3B,$D8,$7D,$E2,$D8,$EE,$B3,$1F,$4E,$28,$80,$4B
	Data.b $00,$48,$10,$07,$65,$F9,$9B,$0F,$6C,$B1,$AB,$B5,$D9,$C2,$CD,$96,$A8,$21,$61,$18
	Data.b $0A,$27,$08,$56,$88,$AA,$81,$48,$10,$73,$06,$30,$02,$BA,$8A,$BC,$40,$A8,$A7,$BF
	Data.b $B7,$96,$5E,$B0,$EB,$E6,$F4,$AA,$17,$8E,$C6,$E7,$67,$D7,$56,$16,$D6,$9E,$F9,$CD
	Data.b $89,$EF,$BD,$D4,$3D,$35,$97,$D9,$91,$68,$51,$2C,$3B,$92,$8C,$94,$72,$F9,$3B,$CB
	Data.b $F7,$22,$8A,$14,$56,$61,$22,$A0,$95,$6D,$3F,$5B,$AC,$7E,$31,$BD,$5A,$77,$E9,$C1
	Data.b $E1,$6D,$E5,$C6,$E6,$F6,$91,$1D,$14,$30,$24,$5A,$4D,$91,$B8,$44,$38,$06,$5C,$C4
	Data.b $53,$D3,$A4,$FE,$91,$01,$23,$18,$70,$1A,$76,$7A,$AD,$C6,$39,$3C,$B2,$B3,$77,$AC
	Data.b $53,$A0,$51,$D1,$B9,$12,$47,$50,$85,$B8,$FD,$81,$ED,$BA,$AC,$67,$26,$D7,$1C,$DF
	Data.b $E9,$0A,$2B,$61,$45,$D3,$08,$53,$98,$FF,$FA,$27,$33,$EF,$5E,$5B,$8E,$AB,$F2,$DD
	Data.b $D5,$E5,$6D,$7B,$1F,$1B,$D9,$36,$26,$03,$0F,$11,$28,$1C,$04,$12,$02,$1A,$01,$2A
	Data.b $E7,$BE,$47,$07,$76,$ED,$E9,$1A,$19,$94,$85,$6B,$B6,$3B,$18,$D5,$9E,$E8,$6F,$1B
	Data.b $4B,$C6,$DA,$64,$B4,$39,$BB,$3C,$39,$B3,$CC,$82,$AA,$D9,$30,$33,$C5,$B2,$28,$A4
	Data.b $E1,$64,$3C,$1E,$8D,$56,$28,$BF,$5B,$2C,$13,$40,$33,$9B,$A6,$A2,$1B,$D4,$77,$86
	Data.b $76,$EE,$3A,$7E,$EC,$79,$BB,$51,$53,$24,$80,$9A,$11,$BC,$BF,$91,$68,$4D,$C1,$27
	Data.b $DB,$8E,$26,$3A,$07,$47,$F7,$B5,$44,$34,$88,$F1,$DC,$F2,$BA,$C6,$59,$5C,$27,$AA
	Data.b $AA,$24,$BB,$5B,$05,$FE,$2F,$5E,$9F,$7E,$FD,$AF,$1F,$94,$64,$B8,$E5,$50,$4F,$A8
	Data.b $23,$60,$52,$2F,$DF,$28,$97,$6D,$D1,$D4,$BE,$C7,$44,$AD,$F3,$47,$8F,$3D,$F9,$D3
	Data.b $1F,$BD,$42,$CD,$B2,$43,$DD,$26,$4D,$45,$0D,$49,$5C,$34,$12,$C0,$CC,$15,$D5,$A1
	Data.b $00,$71,$92,$EF,$3E,$78,$38,$D1,$9A,$8A,$1A,$78,$72,$AD,$F8,$B7,$89,$A5,$06,$70
	Data.b $6F,$5E,$9B,$3C,$73,$EE,$C6,$AD,$75,$F7,$EF,$67,$AE,$2E,$DE,$29,$F7,$0C,$0F,$46
	Data.b $FA,$53,$23,$03,$2D,$C7,$C7,$BA,$DB,$C2,$3A,$E5,$C0,$E6,$3C,$AA,$72,$E0,$D8,$A9
	Data.b $8E,$1E,$CB,$13,$5A,$E1,$A4,$82,$50,$93,$01,$7E,$E1,$D9,$13,$91,$50,$48,$14,$2A
	Data.b $02,$4C,$68,$95,$F8,$04,$BE,$13,$0B,$06,$93,$3D,$43,$EB,$E9,$BB,$F9,$DC,$C6,$62
	Data.b $B1,$96,$0C,$91,$72,$AD,$36,$BE,$9C,$73,$05,$D1,$83,$4A,$D7,$40,$D7,$B6,$78,$74
	Data.b $7D,$2E,$B3,$B4,$51,$0B,$26,$E3,$14,$92,$42,$CD,$34,$54,$39,$15,$90,$25,$CE,$EF
	Data.b $AE,$E5,$E7,$A6,$6E,$24,$C2,$DA,$C3,$63,$A3,$AE,$D5,$C0,$2F,$9E,$F8,$56,$2C,$A4
	Data.b $23,$E6,$21,$21,$79,$02,$DF,$1C,$28,$A8,$99,$EE,$64,$32,$31,$3A,$D2,$21,$57,$32
	Data.b $D9,$6C,$E5,$DA,$7C,$AE,$A7,$2B,$92,$48,$45,$2D,$D3,$6C,$6D,$89,$F9,$9C,$CF,$5D
	Data.b $9B,$99,$99,$CB,$B6,$6C,$ED,$93,$E2,$C1,$7C,$A5,$86,$38,$97,$21,$76,$AA,$75,$99
	Data.b $40,$3D,$64,$78,$5C,$D2,$02,$E1,$AE,$54,$62,$62,$7C,$02,$9F,$7C,$F6,$A9,$58,$C0
	Data.b $60,$DC,$D7,$10,$14,$5D,$27,$E1,$FB,$5B,$BC,$41,$59,$4B,$24,$D0,$15,$B0,$1F,$D9
	Data.b $F7,$8D,$42,$DD,$3F,$7F,$73,$AE,$3F,$15,$36,$5C,$AF,$51,$A8,$05,$90,$12,$8E,$05
	Data.b $F6,$3E,$BC,$73,$DB,$9E,$FE,$85,$D5,$B5,$85,$BB,$9B,$98,$73,$B3,$58,$31,$AB,$0D
	Data.b $59,$C6,$A1,$AE,$E1,$96,$A1,$5D,$B6,$65,$BD,$71,$FA,$F4,$D5,$2F,$6F,$E1,$93,$CF
	Data.b $3C,$15,$09,$0A,$D6,$73,$D1,$07,$58,$80,$4F,$F0,$5B,$F0,$49,$00,$1C,$30,$4D,$57
	Data.b $D4,$78,$B2,$A3,$33,$F5,$E2,$D3,$4F,$50,$3D,$F4,$CE,$D9,$4F,$93,$49,$7D,$68,$C7
	Data.b $88,$4C,$68,$9D,$F8,$6A,$4B,$24,$5B,$35,$EF,$64,$8B,$E5,$8A,$E5,$E6,$8B,$84,$53
	Data.b $84,$19,$53,$02,$46,$FF,$01,$28,$EB,$AB,$D3,$33,$0B,$93,$37,$45,$6E,$08,$66,$BE
	Data.b $0C,$1D,$89,$08,$E6,$36,$A9,$2A,$E8,$07,$31,$C0,$58,$11,$02,$2D,$DC,$D2,$43,$11
	Data.b $CF,$A7,$54,$56,$5F,$F9,$C9,$A9,$CE,$64,$CB,$E2,$EC,$6C,$81,$17,$CC,$46,$1E,$FB
	Data.b $8C,$4B,$DB,$1A,$35,$AF,$5E,$B1,$DD,$5C,$51,$F4,$10,$D1,$75,$97,$B9,$E1,$DE,$9D
	Data.b $24,$10,$28,$17,$37,$17,$E7,$26,$85,$C9,$84,$88,$2D,$71,$5D,$95,$A0,$A0,$1D,$16
	Data.b $65,$29,$80,$D2,$54,$37,$C1,$77,$81,$28,$CF,$25,$D4,$67,$82,$57,$96,$47,$55,$CB
	Data.b $1A,$D9,$36,$FA,$79,$1A,$14,$E7,$3F,$ED,$D1,$03,$C1,$96,$54,$7A,$AD,$14,$E4,$7E
	Data.b $31,$93,$73,$AA,$A6,$DE,$16,$B0,$1A,$B5,$AD,$0F,$1D,$B1,$B5,$6E,$31,$79,$DC,$BC
	Data.b $7C,$A1,$52,$CC,$AB,$04,$DB,$E2,$EF,$86,$22,$87,$0C,$24,$50,$87,$90,$4C,$64,$84
	Data.b $65,$61,$0C,$47,$22,$6B,$6E,$B3,$7C,$B9,$D0,$04,$A1,$D6,$E2,$75,$02,$3F,$9B,$4E
	Data.b $97,$37,$37,$CA,$25,$33,$6D,$84,$14,$66,$FB,$9B,$19,$C5,$B1,$1A,$0E,$8F,$18,$8A
	Data.b $5F,$6F,$0C,$1E,$78,$68,$E0,$F0,$F3,$5F,$9C,$FB,$64,$EA,$C6,$C4,$9D,$85,$05,$21
	Data.b $26,$B6,$4F,$35,$15,$20,$C3,$00,$9A,$CC,$C5,$37,$55,$E1,$44,$E1,$C0,$E0,$50,$FD
	Data.b $0A,$60,$00,$AB,$80,$10,$AE,$29,$30,$A4,$C1,$FC,$7A,$7E,$7B,$5F,$E7,$E3,$8F,$EC
	Data.b $6D,$ED,$4C,$69,$9D,$83,$72,$DB,$A0,$0D,$B4,$4C,$A1,$41,$9B,$47,$BC,$D1,$B1,$03
	Data.b $3F,$FF,$FD,$9B,$99,$DB,$1B,$33,$B7,$6E,$5E,$BF,$3E,$91,$8C,$A8,$0C,$20,$21,$31
	Data.b $C2,$6A,$24,$26,$36,$AC,$8B,$EB,$55,$AE,$21,$AE,$35,$47,$80,$E6,$84,$C1,$9B,$42
	Data.b $2D,$DE,$50,$A2,$3A,$89,$05,$0B,$55,$F3,$E5,$5F,$BC,$FA,$C9,$7F,$CF,$BD,$74,$F2
	Data.b $C5,$5F,$BE,$FA,$DA,$96,$A1,$61,$50,$AB,$B2,$5A,$59,$4C,$72,$40,$10,$62,$AD,$34
	Data.b $5B,$AC,$7F,$36,$FE,$E5,$87,$67,$FF,$79,$67,$69,$76,$FF,$48,$BB,$68,$7B,$41,$7E
	Data.b $A8,$48,$3F,$3E,$F5,$1C,$01,$B2,$0C,$34,$24,$06,$14,$70,$5F,$79,$BE,$1A,$21,$9B
	Data.b $8B,$40,$85,$E0,$A5,$2B,$B7,$2E,$4D,$97,$8A,$9E,$4E,$51,$78,$E2,$CA,$B5,$F5,$EC
	Data.b $C6,$48,$EF,$C0,$D5,$8E,$B6,$CC,$4D,$A6,$32,$DB,$45,$A0,$5C,$2E,$03,$A2,$BE,$FF
	Data.b $E9,$E7,$6F,$7D,$F4,$78,$AF,$8E,$8E,$EC,$E9,$CF,$E5,$AA,$A5,$92,$25,$30,$F9,$B3
	Data.b $EF,$1E,$FF,$C1,$A9,$E7,$05,$E1,$84,$EA,$F3,$AF,$0D,$47,$F7,$AF,$16,$BF,$28,$90
	Data.b $24,$5C,$DD,$A8,$BC,$F3,$EF,$DB,$2B,$36,$8A,$C7,$60,$CF,$E0,$E0,$B9,$F7,$FF,$FE
	Data.b $DC,$91,$43,$A3,$BD,$BD,$89,$47,$8E,$25,$BA,$BA,$5A,$36,$E7,$6C,$C7,$5F,$2B,$A3
	Data.b $EE,$23,$2F,$78,$37,$A7,$2F,$5D,$B8,$10,$1C,$4E,$8C,$2F,$6C,$E4,$D2,$05,$88,$58
	Data.b $38,$60,$3C,$7D,$FC,$31,$57,$E8,$C1,$D7,$24,$72,$EE,$C7,$E4,$FF,$0B,$43,$31,$C6
	Data.b $2C,$AE,$D8,$76,$7B,$77,$17,$73,$78,$C3,$13,$68,$94,$65,$92,$DD,$2C,$15,$57,$73
	Data.b $C3,$94,$8C,$1E,$3E,$5C,$82,$06,$B7,$D7,$FB,$F6,$1F,$85,$B1,$B6,$5C,$E1,$E3,$58
	Data.b $4C,$B9,$5D,$F1,$55,$C6,$0D,$24,$A5,$29,$FD,$D3,$1F,$FF,$70,$F0,$F1,$6F,$4F,$CC
	Data.b $CC,$10,$28,$71,$AC,$E1,$FB,$C2,$7F,$DF,$09,$5F,$CC,$DA,$44,$24,$C8,$CC,$36,$EE
	Data.b $6E,$98,$12,$B6,$AD,$CD,$92,$EB,$A2,$CC,$CA,$9C,$28,$DF,$96,$60,$C0,$33,$D8,$FC
	Data.b $AD,$F1,$52,$21,$A7,$A9,$4A,$BE,$88,$BB,$97,$B3,$EB,$5F,$5C,$35,$0B,$F9,$84,$2C
	Data.b $02,$8D,$54,$00,$D2,$F5,$7A,$2C,$9E,$38,$78,$E8,$E1,$B5,$92,$AD,$1A,$51,$D2,$68
	Data.b $98,$B3,$33,$19,$FE,$D5,$03,$CD,$39,$15,$F2,$52,$DD,$2E,$F1,$7C,$09,$98,$3E,$F0
	Data.b $1B,$B5,$C2,$66,$A9,$DE,$70,$6D,$CF,$D1,$B4,$40,$53,$5B,$91,$60,$30,$09,$B6,$B5
	Data.b $9E,$3C,$F9,$72,$3E,$73,$2F,$B3,$91,$9D,$9E,$BC,$91,$D0,$03,$42,$9A,$C4,$08,$64
	Data.b $53,$EA,$EA,$46,$48,$D7,$2F,$9E,$3F,$FF,$E0,$E1,$87,$A1,$6B,$FD,$4F,$80,$01,$00
	Data.b $EE,$11,$56,$24,$33,$0A,$3C,$CC,$00,$00,$00,$00,$49,$45,$4E,$44,$AE,$42,$60,$82
EndDataSection
srod
PureBasic Expert
PureBasic Expert
Posts: 10589
Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...

Post by srod »

Mistrel, it is possible to alter the icons in column zero - no problem.

However, you do have to understand Window's and PB's way of handling column zero icons with ListIcon gadgets. Items in column zero are automatically assigned image index zero (all other subitems receive image index -1) meaning that as soon as an image list is added to the listicon, items in column zero automatically receive the first image in the list. Now, in PB's case, rather than reset all image indexes in column zero to -1, it instead adds a dummy image to the image list consisting of a fully transparent 'blank' icon. Thus, items without an ImageID() included in their underlying AddGadgetItem() receive this transparent icon.

In the case of your custom image list, items in column zero are each thus automatically being assigned the first image in your list (having image index 0). So, you either need to reset all items in column zero to have their iImage values set to -1 before assigning the image list to the listicon, or do what PB does and add a fully transparent icon as the first image - which is actually the better choice.

So, you can either reset your code to use column zero as it should work out fine for your needs (as I understand them), or, if you wish to continue with blanking out column 0, I can post some code to prevent the cursor from changing when over the column 0 divider etc.

**EDIT : just had a look at Sparkie's code for using a virtual listicon - works fine here. Just add subitemimages and there's no problem. You can remove the SetGadgetItemText() and you want to put the line

Code: Select all

ImageList_Add_(imgList, img0, 0)
outside of the loop because you are adding 10000 copies of the same image! Just add one copy instead which has index 0 and keep this in mind in the callback.
There is a slight redrawing issue with subitem images on my machine, but that is the case also for non-virtual listicons! I would say that the virtual listicon is the way to go if speed is critical.
I may look like a mule, but I'm not a complete ass.
Mistrel
Addict
Addict
Posts: 3415
Joined: Sat Jun 30, 2007 8:04 pm

Post by Mistrel »

I initially attempted to use a fully transparent icon for the ImageList index 0. The problem with this is that even though the icon is transparent the text is still indented by the width of the image.

I also tried to remove the images automatically assigned to column 0 by passing the image index of -1. This worked for all other columns but not for column 0.

If this is working for you would you please post a code example? Maybe I did something incorrectly or perhaps it works on Vista differently than Windows XP?
Post Reply