none
¿Vistas en Miniatura e Iconos de Archivos para un ListView?

    Question

  • Estoy desarrollando un proyecto en donde uso un ListView para mostrar archivos como en el explorador pero no sé como obtener las vistas en miniatura de los archivos o los iconos por lo menos de los tipos de archivo. Ayuda
    Tuesday, June 28, 2011 11:12 PM

Answers

  • hola

    estas asociando este ListView a un ImageList ?

    porque si es asi recuerda que esta la propeidad

    LargeImageList

    y

    SmallImageList

    para definir las imagenes cuando se visualzia en grande y pequelo los datos del ListView, has defindo estas dos propeidades y los dos imagelist

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, June 29, 2011 12:25 AM

All replies

  • hola

    estas asociando este ListView a un ImageList ?

    porque si es asi recuerda que esta la propeidad

    LargeImageList

    y

    SmallImageList

    para definir las imagenes cuando se visualzia en grande y pequelo los datos del ListView, has defindo estas dos propeidades y los dos imagelist

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, June 29, 2011 12:25 AM
  • hola

    estas asociando este ListView a un ImageList ?

    porque si es asi recuerda que esta la propeidad

    LargeImageList

    y

    SmallImageList

    para definir las imagenes cuando se visualzia en grande y pequelo los datos del ListView, has defindo estas dos propeidades y los dos imagelist

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Si ya se, el hecho es que como obtengo las vistas en miniatura de los archivos a partir de su ubicacion, o por lo menos el icono del tipo de archivo, como lo saco del sistema para poder llenar mi imageList que esta asociado al ListView, eso es en si el problema
    Wednesday, June 29, 2011 1:50 AM
  • Aqui te va un ejemplo de como se cargar, eliminana y ejecutan los elementos del listview

    clase principal Form1.vb

     

    Imports System.Threading
    Imports System.Text
    Imports Microsoft.Win32
    Imports System.IO
    Public Class vprincipal
    
      Private Sub vprincipal_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        ''DAMOS TAMAÑO A DIV GLOBAL
        div1.Location = New Point(0, 0)
        div1.Width = Me.Width
        div1.Height = Me.Height
        ''DAMOS TAMAÑO A OPCIONES
        opciones.Location = New Point(0, 0)
        opciones.Width = div1.Width - 22
        opciones.Height = div1.Height - 45
        ''DAMOS TAMAÑO A DIV2
        div2.Location = New Point(0, 0)
        div2.Width = opciones.Width - 5
        div2.Height = opciones.Height - 25
        ''DAMOS TAMAÑO A REGISTROS
      End Sub
    
      Private Sub vprincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cargar_menu()
      End Sub
    End Class
    
    

     


    clase para obtener iconos de los archivos añadidos Extracticon.vb

     

    Option Strict On
    Option Explicit On
    Imports Microsoft.VisualBasic
    Imports System
    Imports System.Windows.Forms
    Imports System.Drawing
    Imports System.Runtime.InteropServices
    Namespace QbiSoft
      Public Class Extracticon
        <DllImport("shell32.dll")> _
        Private Shared Function ExtractIconEx( _
            ByVal lpszFile As String, ByVal nIconIndex As Integer, _
            ByRef phiconLarge As Integer, ByRef phiconSmall As Integer, _
            ByVal nIcons As UInteger) As Integer
        End Function
        <DllImport("shell32.dll")> _
        Private Shared Function ExtractIcon( _
            ByVal hInst As Integer, ByVal lpszExeFileName As String, _
            ByVal nIconIndex As Integer) As IntPtr
        End Function
        <DllImport("user32.dll")> _
        Private Shared Function GetClassLong( _
            ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer
        End Function
        Private Const GCW_HMODULE As Integer = (-16)
        Public Shared Function IconToPictureBox( _
                ByVal picBox As PictureBox, _
                ByVal sPath As String, _
                ByVal indice As Integer) As Boolean
    
          Dim icono As Icon = IconPorIndice(sPath, indice)
          If icono IsNot Nothing Then
            picBox.Image = icono.ToBitmap
            Return True
          End If
    
          Return False
        End Function
        Public Shared Function IconPorIndice( _
                ByVal sPath As String, _
                ByVal indice As Integer) As Icon
          Dim hInst As Integer
          Dim hIcon As IntPtr
          hInst = GetClassLong(IntPtr.Zero, GCW_HMODULE)
          hIcon = ExtractIcon(hInst, sPath, indice)
          If hIcon <> IntPtr.Zero Then
            Return Icon.FromHandle(hIcon)
          End If
          Return Nothing
        End Function
        Public Shared Function TotalIconos(ByVal sPath As String) As Integer
          Return ExtractIconEx(sPath, -1, 0, 0, 0)
        End Function
        Public Shared Function IconAsociado(ByVal sFic As String) As Icon
          Dim icono As Icon = Nothing
          Try
            icono = Icon.ExtractAssociatedIcon(sFic)
          Catch 'ex As Exception
          End Try
    
          Return icono
        End Function
        Public Shared Function IconToBitmap(ByVal icono As Icon) As Bitmap
          If icono Is Nothing Then
            Return Nothing
          Else
            Return icono.ToBitmap
          End If
        End Function
      End Class
    End Namespace
    


    y por ultimo un modulo de funciones.vb

    Imports System.Threading
    Imports System.Text
    Imports Microsoft.Win32
    Imports System.IO
    Module funciones
      Public Sub cargar_menu()
        vprincipal.menulista.LargeImageList = vprincipal.img
        ''AÑADIMOS ELEMENTOS A LA LISTA
        vprincipal.menulista.Items.Add("Add File/s", 0)
        vprincipal.menulista.Items.Add("Borrar File/s", 0)
        vprincipal.menulista.Items.Add("Generar Safe", 0)
        ''ASIGNAMOS FUNCION PARA EVENTO CLICK
        AddHandler vprincipal.menulista.ItemActivate, AddressOf click_menu
        AddHandler vprincipal.archivosadd.ItemActivate, AddressOf click_menu2
        AddHandler vprincipal.archivosadd.KeyDown, AddressOf suprimir
      End Sub
      Public Sub click_menu(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim itm As ListView = DirectCast(sender, ListView)
        operaciones(itm.SelectedItems(0).Text)
      End Sub
      Public Sub click_menu2(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim itm As ListView = DirectCast(sender, ListView)
        llamar_file(itm.SelectedItems)
      End Sub
      Public Sub operaciones(ByVal operacion As String)
    
        Select Case operacion
          Case "Add File/s"
            Dim cnt_files As New OpenFileDialog
            Dim files() As String
            cnt_files.Multiselect = True
            cnt_files.CheckFileExists = True
            cnt_files.CheckPathExists = True
            cnt_files.CheckPathExists = False
            cnt_files.Title = "ADD File/s :Archives in Safes"
            cnt_files.ShowDialog()
            files = cnt_files.FileNames()
            add_files(files)
          Case "Borrar File/s"
            borrar_file(vprincipal.archivosadd.SelectedItems)
          Case Else
    
        End Select
    
      End Sub
      Public Sub add_files(ByVal files() As String)
        Dim imagen As Image
        For Each file As String In files
          Try
            Try
              imagen = New Bitmap(file)
              vprincipal.imgarchivosadd.Images.Add(file, imagen)
            Catch ex As Exception
              vprincipal.imgarchivosadd.Images.Add(file, QbiSoft.Extracticon.IconAsociado(file))
            End Try
            vprincipal.archivosadd.Items.Add(file, file, file)
            ''vprincipal.archivosadd.Items.Add(file)
          Catch ex As Exception
            MsgBox("Ha ocurrido un error en el proceso de ADD FILE/S.")
          End Try
          System.Windows.Forms.Application.DoEvents()
        Next
      End Sub
      Public Sub llamar_file(ByVal files As System.Windows.Forms.ListView.SelectedListViewItemCollection)
        For Each itm As ListViewItem In files
          Process.Start(itm.Text, "QbiSoft")
        Next
      End Sub
      Public Sub borrar_file(ByVal files As System.Windows.Forms.ListView.SelectedListViewItemCollection)
        For Each itm As ListViewItem In files
          vprincipal.archivosadd.Items.RemoveByKey(itm.Text)
          vprincipal.imgarchivosadd.Images.RemoveByKey(itm.Text)
        Next
        vprincipal.archivosadd.Refresh()
      End Sub
      Public Sub suprimir(ByVal sender As Object, ByVal e As KeyEventArgs)
        Dim tecla As KeyEventArgs = DirectCast(e, KeyEventArgs)
        Dim list As ListView = DirectCast(sender, ListView)
        If tecla.KeyValue = 46 Then
          borrar_file(list.SelectedItems)
        End If
      End Sub
    End Module
    
    


     

    Friday, July 08, 2011 4:16 AM