Nahrání obrázků do ImageListu

Procedura:
Private Declare Function ImageList_ReplaceIcon Lib _
   "COMCTL32" (ByVal hImageList As Long, _
   ByVal i As Long, ByVal hIcon As Long) As Long

'Nahraje sadu obrázků u diskového souboru do komponenty ImageList.
'Diskový soubor musí být předtím uložen pomocí SaveImageList
'a cílový ImageList musí obsahovat dostatek obrázků v kolekci ListImage

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
    
   ' Chyba "File not found" pokud soubor neexistuje
   If Len(Dir$(FileName)) = 0 Then Err.Raise 53

   ' Otevření souboru a načtení obsahu
   handle = FreeFile
   Open FileName For Binary As #handle
   Get #handle, , varTemp
   Close #handle

   ' přebudování objektu property bag
   pb.Contents = varTemp
   ' vytvořen dočasného ImageListu, který není na žádném formuláři
   Set ImgLocal = pb.ReadProperty("IMG")

   ' Protože nelze vymazat koleci ListImage cílové komponenty
   ' ImageList, pokud je svázána s jinou komponentou,
   ' je jediná cesta, jak zaměnit obrázky z dočasného ImageListu
   ' do sílového ImageListu pomocí ImageList_ReplaceIcon API

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

End Sub

Zpět

Autor: The Bozena