Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    11

    [Vb 6] Caricare le icone in un list view

    Salve ragazzi qualcuno può aiutarmi

    Dovrei caricare una listview con i nomi dei file presenti in una cartella e visualizzargli di lato la relativa icona.

    Io sono riuscito ad estrarre dal file la sua icona e la ho caricata in memoria, quindi posso accedervi tramite il suo Handle come faccio a caricarla nel list view?

    grazie a tutti coloro che gentilmenti mi aiutranno

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    11

    Aiuto

    Questa è la form

    come vedete riescoa a caricare l'icona in un picture box e non nella list view

    il codice è il seguente

    Call GetProgram(Me, Trim(Text2.Text), Text1)
    'recupero 'eseguibile associata all'estenzione
    Call GetIcon(Me, Trim(Text2.Text), Picture1)
    'recupero l'handle dell'icona e la visualizzo a video


    Set imgx = ImageList1.ListImages.Add(I, , Picture1.Image)
    associo l'immagine all'image list

    ListView1.SmallIcons = ImageList1

    aggiungo la riga
    Set itmx = ListView1.ListItems.Add(, , Text2.Text, , I)
    Immagini allegate Immagini allegate

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    non sono pratico di icone et simila ma, da quel che si vede nell'immagine, la colonna della listview tente di associare un'icona 32*32 mentre tu hai caricato la imagelist delle smallicons che, se non sbaglio(ma probabilmente sbaglio) sono 16*16.

    prova a cambiare le impostazioni della listview.
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    11
    si ottiene questo cambiando
    Immagini allegate Immagini allegate

  5. #5
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035
    per quel poco che ricordo del controllo ListView, c'è un apposito pannello delle proprietà in cui devi incorporare tutte le immagini... sempre se non mi sbaglio...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ho fatto qualche prova e non ho avuto il tuo problema.

    Sospetto che la spiegazione stia nella GetIcon

    Puoi mostrare questa funzione?

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    11
    Public Sub GetIcon(Frm As Form, Ext As String, Control As PictureBox)
    On Error GoTo Errore
    Dim Temp As Variant, Valore As Variant
    '"Valore" è la variabile che contiene il percorso del file e l'eventuale indice dell'icona.
    Dim Virgola As Integer
    Dim File As String
    Dim Indice As Long, hIcona As Long, Esegui As Long
    Control.Picture = LoadPicture("")
    'Cerca di ottenere il file che contiene l'icona associata al tipo di file specificato.
    Temp = GetRegistryValue(HKEY_CLASSES_ROOT, "." & Ext, "")
    Valore = GetRegistryValue(HKEY_CLASSES_ROOT, Temp & "\DefaultIcon", "")
    If Valore = "" Then
    'Se non ottiene il nome del programma in questo modo, tenta in un'altra chiave del Registro.
    Valore = GetRegistryValue(HKEY_CLASSES_ROOT, Temp & "\CLSID", "")
    'Se neanche in questo modo ottiene il nome del programma, esce.
    Valore = GetRegistryValue(HKEY_CLASSES_ROOT, "CLSID\" & Valore & "\DefaultIcon", "")
    If Valore = "" Then GoTo Errore
    End If
    File = CStr(Valore)
    'Determina se l'icona ha un indice.
    Virgola = InStr(File, ",") 'Se Virgola > 0, l'icona ha un indice.
    'Determina il percoro del file contenente l'icona.
    If Virgola <> 0 Then File = Left$(File, Virgola - 1) Else File = Valore
    'Se il nome del file include le virgolette (""), le elimina.
    If Left$(File, 1) = Chr$(34) Then File = Right$(File, Len(File) - 1)
    If Right$(File, 1) = Chr$(34) Then File = Left$(File, Len(File) - 1)
    'Se il file non esiste, visualizza un messaggio di errore.
    If Dir(File, 6) = "" Then GoTo Errore
    'Determina l'eventuale indice dell'icona.
    If Virgola <> 0 Then Indice = Val(Right$(Valore, Len(Valore) - Virgola)) Else Indice = 0
    'Ottiene l'handle dell'icona.
    hIcona = ExtractIcon(App.hInstance, File, Indice)
    'Se l'handle dell'icona è uguale 0, allora si è verificato un errore.
    If hIcona = 0 Then GoTo Errore
    'Disegna l'icona.
    Esegui = DrawIcon(Control.hDC, 0, 0, hIcona)
    ' Rilascio la risorsa icona HIcona allocata
    Call DestroyIcon(hIcona)
    'Se "Esegui" è uguale a 0, allora si è verificato un errore.
    If Esegui = 0 Then GoTo Errore
    Exit Sub
    Errore:
    MsgBox "Impossibile trovare l'icona associata a questo tipo file.", vbExclamation, Frm.Caption
    Exit Sub
    End Sub

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    11
    Public Sub GetProgram(Frm As Form, Ext As String, Control As TextBox)
    On Error GoTo Errore
    Dim Temp As Variant, Valore As Variant
    '"Valore" è la variabile che contiene il percorso del file e l'eventuale indice dell'icona.
    Dim File As String
    Dim Parametri As Integer
    Control.Text = ""
    'Cerca di ottenere il programma associato al tipo di file specificato.
    Temp = GetRegistryValue(HKEY_CLASSES_ROOT, "." & Ext, "")
    Valore = GetRegistryValue(HKEY_CLASSES_ROOT, Temp & "\Shell\Open\Command", "")
    If Valore = "" Then
    'Se non ottiene il nome del programma in questo modo, tenta in un'altra chiave del Registro.
    Valore = GetRegistryValue(HKEY_CLASSES_ROOT, Temp & "\Shell\Play\Command", "")
    'Se neanche in questo modo ottiene il nome del programma, esce.
    If Valore = "" Then GoTo Errore
    End If
    File = CStr(Valore)
    'Se il nome del file include le virgolette iniziali e finali (""), le elimina.
    If Left$(File, 1) = Chr$(34) Then File = Right$(File, Len(File) - 1)
    If Right$(File, 1) = Chr$(34) Then File = Left$(File, Len(File) - 1)
    Do
    'Rimuove gli eventuali parametri della riga di comando.
    'NOTA: questo codice controlla i tre tipici "indicatori" che introducono il parametro della riga di comando.
    'Se il primo non c'è, controlla la presenza del secondo, se manca anche questo, controlla se c'è il terzo: in caso negativo, non ci sono parametri della riga di comando.
    Parametri = InStr(File, "%")
    If Parametri = 0 Then
    Parametri = InStr(File, "/")
    If Parametri = 0 Then
    Parametri = InStr(File, "-")
    End If
    End If
    If Parametri <> 0 Then File = Trim(Left$(File, Parametri - 1))
    Loop Until Parametri = 0
    'Se il nome del file include le virgolette finali (""), le elimina.
    If Right$(File, 1) = Chr$(34) Then File = Trim(Left$(File, Len(File) - 1))
    'Se il nome del file include ancora le virgolette finali (""), le elimina.
    If Right$(File, 1) = Chr$(34) Then File = Left$(File, Len(File) - 1)
    'Se il file non esiste, visualizza un messaggio di errore.
    If Dir(File, 6) = "" Then GoTo Errore
    Control.Text = GetLongFileName(File)
    'Se il nome del file restituito è "\", allora l'estensione digitata indica un file eseguibile.
    If Control.Text = "\" Then Control.Text = "(eseguibile)"
    Exit Sub
    Errore:
    MsgBox "Impossibile trovare il programma associato a questo tipo file.", 16, Frm.Caption
    Exit Sub
    End Sub

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    ti consiglio di mettere il codice tra i tag code e /code (con le quadre) perchè così non si capisce una mazza
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  10. #10
    Utente di HTML.it L'avatar di luisa227
    Registrato dal
    Mar 2002
    Messaggi
    2,305
    :-) penso che manchi il codice
    codice:
      ListView1.View = 1
    ... dovresti risolvere!
    Grazie a te ho risolto il mio problema che era simile al tuo, quindi a buon rendere!!!
    ciao Luisa
    Le mie richieste qui sul forum sono al 99,9% considerate assurde e senza senso, ma per me un senso lo hanno e gradirei una risposta più seria possibile. Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.