Newsgroup: it.comp.lang.visual-basic
Titolo: [NET] Icone

Ciao a tutti!
Anch'io ho provato come suggeriva qualche post più sotto a mettere le icone
specifiche dei file in una listview avendo l'icona ritornata dall'Api
ExtractAssociatedIcon, solo che pure a me resta una sola icona per tutti i
file...
Gentilmente qualcuno potrebbe postare un pezzetto di codice che fa
visualizzare le icone accanto ai nomi avendo per ogni file una "ICONA" come
system.drawing.icon???
Grazie a tutti per l'aiuto!!
Vittorio.

"Renegade" <fco...@PIPPOkataweb.it> ha scritto nel messaggio
news:24Fda.75876$pG1.1...@news1.tin.it...

Un metodo potrebbe essere il seguente:
1- Aggiungo un o una ImageList
2- Rilevo nome file ; carico icona nella Image ; conosco l'Index dell'icona
nell'Image
3- Add all'Items della ListView il nome del file e il relativo Index
dell'Icona
giuseppeD

 dell'Icona
Io ho provato quel codice qui sotto (che deovrebbe fare come dici tu), ma
non funziona...
Private Sub cboxDIR_SelectedIndexChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles cboxDIR.SelectedIndexChanged
Dim d As New System.IO.DirectoryInfo(cboxDIR.Text)
Dim f As System.IO.FileInfo
Dim index As Integer
ListaCLIENT.Items.Clear()
ListaCLIENT.View = View.Details
Dim img As New ImageList()
For Each f In d.GetFiles
    Dim ico As System.Drawing.Icon = ExtractIcon(f.Name)
    img.Images.Add(ico)
    index = img.Images.Count() - 1
    ListaCLIENT.SmallImageList = img
    ListaCLIENT.Items.Add(f.Name, index)
Next
End Sub


Il seguente punta alla directory c:\
e da me funziona:
----------
Imports System.IO
Imports System.Runtime.InteropServices
Imports System.Reflection
-----------
  Declare Function ExtractAssociatedIcon Lib "shell32" Alias _
"ExtractAssociatedIconA" (ByVal hInst As IntPtr, ByVal lpIconPath As String,
ByRef lpiIcon As Int32) As IntPtr
    Public Function ExtractIcon(ByVal file As String) As Icon
        Dim m As [Module] = GetType(MeasureItemEventArgs).Module
        Dim hPtr As IntPtr = ExtractAssociatedIcon(Marshal.GetHINSTANCE(m),
file, 0)
        Return Icon.FromHandle(hPtr)
    End Function
---------------
        ListaCLIENT.Columns.Add("File", ListaCLIENT.Width,
HorizontalAlignment.Left)
        ListaCLIENT.View = View.Details
        Dim ff As String = "c:\"
        Dim d As New System.IO.DirectoryInfo(ff)
        Dim f As System.IO.FileInfo
        Dim index As Integer
        ListaCLIENT.Items.Clear()
        Dim img As New ImageList()
        ListaCLIENT.SmallImageList = img
        For Each f In d.GetFiles
            Dim ico As System.Drawing.Icon = ExtractIcon(ff & f.Name)
            img.Images.Add(ico)
            index = img.Images.Count() - 1
            ListaCLIENT.Items.Add(f.Name, index)
        Next
-------------
Consideriamo che in una cartella si possono trovare più file con la stessa
estensione ;
l'ottimo è caricare una icona una sola volta;
Sempre che per una stessa estensione non si hanno icone diverse
giuseppeD

 ha scritto nel messaggio
news:TTMda.78607$pG1.1...@news1.tin.it...


 Stesso codice, a te funziona e a me no... Com'è possibilie???
Mi correggo. Ho visto il bug... Specificavo il file ma non la directory dove
stava...
Però ho notato che le icone vengono disegnate un po' male. Tu noti questo
oppure è un mio problema? Sembrano più sbiadite e con i colori a volte un
po' fuori fase...


Aumenta la dimensione dell'immagine
Es. 25 * 25
giuseppeD

 Es. 25 * 25
Ehm... Scusa, come si fa? Io ho un oggetto icona ma non riesco con questo a
settare dei valori per la dimensione...

 settare dei valori per la dimensione...
Dim img As New ImageList()
Dim siz As Size
siz.Height = 25
siz.Width = 25
img.ImageSize = siz
ListaCLIENT.SmallImageList = img
Per Giuseppe: in effetti anch'io le vedo "brutte" e anche ingrandendole
rimangono proprio bruttine...

 ha scritto nel messaggio
news:593ea.84069$pG1.1...@news1.tin.it...

L'icona si presenta , al video di sviluppo , con una grafica pessima se la
dimensione č piccola 16 ; 16 , ma portandole a 25 ; 25 assicuro che č
migliorata di molto, direi presentabile.
giuseppeD