Visual Basic - List View

Life is soft - evento anual de software empresarial
 
Vista:

List View

Publicado por NoExit (1 intervención) el 07/09/2005 02:33:21
Hola, estoy intentando insertar en un listview 6 elementos con una imagen a su izquierda, pero no doy con la tecla a la hora de ponerles la imgen... ¿se puede, es muy complicado, alguien puede ayudarme?

De antemano un millon de gracias por vuestro tiempo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Aquí te explico

Publicado por Zoto (41 intervenciones) el 07/09/2005 22:54:01
Lo que quieres hacer no es complicado, en absoluto.

A continuación te explico lo que debes hacer para realizar este ejemplo que te propongo:

Inicia un nuevo proyecto EXE Estándar en Visual Basic y ve al menú Proyecto - Componentes.
Checkea el elemento: Microsoft Window Common Controls 5.0

Ahora, en el formulario, inserta un control ImageList y un ListView.

Da al ListView el nombre: LV
Da al ImageList el nombre: imgList

Haz click con el botón derecho encima de imgList y selecciona Propiedades en el popup menú aparecido.

En la pestaña General selecciona el tamaño 16 x 16 y en Imágenes selecciona 6 imágenes de tu disco duro distintas.

En el evento Load del formulario, escribe:

'---------------------------------
'código
'---------------------------------

Private Sub Form_Load()
Dim List As ListItem

LV.ColumnHeaders.Add , , "Elementos" 'Se crea un encabezado de columna en el ListView
LV.SmallIcons = imgList 'Se asigna imgList como control ImageList que contiene los iconos pequeños
LV.View = lvwReport 'Se selecciona vista de iconos pequeños

For i = 1 To 6
Set List = LV.ListItems.Add(i)
List.Text = "Elemento nº " & i 'Se añade el texto del elemento actual
List.SmallIcon = i 'Se asigna el icono pequeño del elemento actual mediante el índice correspondiente en en ImageList
Next i
End Sub

'---------------------------------
'código
'---------------------------------

Este código rellena el ListView con 6 elementos y les adjudica un icono pequeño distinto a cada uno de ellos.
Si tu propósito no era mostrar el ListView con iconos pequeños, es decir, no querías el ListView con propiedad View en lvwReport (para mostrar los elementos en detalle y con iconos pequeños) o, si en alguna parte del código, deseas cambiar de vista de iconos (de pequeños a grandes o viceversa) puedes modificar el código de esta manera, para que, además de asignar iconos pequeños, asigne iconos grandes:

'---------------------------------
'código
'---------------------------------

Private Sub Form_Load()
Dim List As ListItem

LV.ColumnHeaders.Add , , "Elementos" 'Se crea un encabezado de columna en el ListView

LV.SmallIcons = imgList 'Se asigna imgList como control ImageList que contiene los iconos pequeños
LV.Icons = imgList 'Se asigna imgList como control ImageList que contiene los iconos grandes

LV.View = lvwReport 'Se selecciona vista de iconos pequeños

For i = 1 To 6
Set List = LV.ListItems.Add(i)
List.Text = "Elemento nº " & i 'Se añade el texto del elemento actual
List.SmallIcon = i 'Se asigna el icono pequeño del elemento actual mediante el índice correspondiente en en ImageList
List.Icon = i 'Se asigna el icono del elemento actual mediante el índice correspondiente en en ImageList
Next i
End Sub

'---------------------------------
'código
'---------------------------------

Este nuevo código, además de establecer las imágenes del imgList como iconos pequeños de los elementos, también los establece como iconos grandes, de manera que si se cambia la propiedad View del ListView a lvwIcon se muestran iconos grandes y, si se cambia a lvwReport, se muestran iconos pequeños.

Como has visto, para adjudicar una imagen de un control ImageList a un elemento de un ListView, basta con asignar a la propiedad Icon (o SmallIcon, en caso de iconos pequeños) el índice de la imagen correspondiente en el ImageList o, opcionalmente, el Key.
Este último, en según que casos, puede resultar más entendedor, puesto que se le puede dar a cada imagen del ImageList un Key de acuerdo con su apariencia (por ejemplo, si la imagen es un archivo, le podemos dar el Key "file" o si se trata de una carpeta, el Key "folder" o "carpeta", como queramos, pero, sin duda, siempre resulta más intuitivo que asignarle un número (Index).

Espero que mi explicación haya sido entendedora y perdón si me he alargado un poco... pero es que me resulta inevitable...

Si lo deseas, puedo enviarte un código fuente para mayor comprensión.

Hasta otra,

Zoto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Aquí te explico

Publicado por NoExit (13 intervenciones) el 08/09/2005 16:44:18
Zoto, no tengo palabras para agradecer tu dedicacion y explicacion. Estoy en el trabajo, en cuanto llegue me lio con tu ejemplo, "por tu culpa" hoy tengo mas ganas de salir de lo normal ;)

Saludos e infinitas gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:De nada...

Publicado por Zoto (41 intervenciones) el 08/09/2005 23:31:52
De nada...

Y ya sabes, si necesitas el código fuente comentado para acabar de comprender algo, tan solo dímelo, puesto que no me es ninguna molestia (ya lo tengo preparado...).

Hasta otra,

Zoto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:De nada...

Publicado por NoExit (13 intervenciones) el 09/09/2005 00:53:19
Si ya lo tienes preparado lo minimo que puedo hacer es estudiarlo con detenimiento. Cuando tengas unos minutos me lo puedes enviar a [email protected]

De nuevo infinitas gracias por tu atencion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Código enviado

Publicado por Zoto (41 intervenciones) el 09/09/2005 13:52:32
En teoria, y si todo ha ido correctamente, el código ya ha sido enviado.

Si no lo has recibido comunícamelo y volveré a enviarlo.

Si alguien está interesado en dicho código (además de haber consultado mi explicación) que lo comunique.

Hasta otra,

Zoto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar