ReloadImgList




Private Declare Function ImageList_ReplaceIcon Lib "COMCTL32" (ByVal hImageList _
As Long, ByVal i As Long, ByVal hIcon As Long) As Long
' Load a set of images from a disk file to a ImageList control

' The file must have been saved using the SaveImageList control, and the

' target ImageList control must contain enough images in its

' ListImage collection.

'_________________________________________________________


Public Sub LoadImageList(ImageList As ImageList, ByVal FileName As String)
Dim pb As New PropertyBag
Dim varTemp As Variant
Dim handle As Long
Dim Li As ListImage
Dim ImgLocal As Object ' can use early binding here!

' Error "File not found" if the file doesn't exisit

If Len(Dir$(FileName)) = 0 Then Err.Raise 53

' Open the file and read its contents

handle = FreeFile
Open FileName For Binary As #handle
Get #handle, , varTemp
Close #handle

' rebuild the property bag object

pb.Contents = varTemp
' create a temporary ImageList control that isn't sited on any form

Set ImgLocal = pb.ReadProperty("IMG")

' because we can't clear the ListImage collection of the target

' ImageList control if the control is bound to any other control,

' the only way to move the images from the temporary ImageList to

' the target ImageList is using the ImageList_ReplaceIcon API

For Each Li In ImgLocal.ListImages
ImageList_ReplaceIcon ImageList.hImageList, Li.Index - 1, _
Li.Picture.handle
Next
End Sub











( reloadimglist.html )- by Paolo Puglisi - Modifica del 17/12/2023