Escrito por Pablo Javier Gonzalez el Jueves 16 de Mayo de 2002 a las 00:00hs
El presente articulo esta orientado a la utilización de listas de datos con el objeto Active X Listview. Veamos primero como que es el control ListView, como instalarlo y como utilizarlo.
Que es?
Para ver el ejemplo mas popular de uso del control, lo mas sencillo es entrar al explorador de windows y ver sobre la parte derecha de la ventana el objeto que muestra el contenido de una carpeta.
Ese es uno de los ejemplos de uso, cabe destacar que las listview son muy flexibles y poseen algunas caracteristicas que las hacen utiles para diferentes aplicaciones.
Podemos decir que basicamente se lo utiliza para listas de datos ordenados en forma de columnas. Se pueden iconos graficos en cada fila o incluso en alguna columna en especial, lo que lo hace un control muy vistoso para representar informacion.
Donde se encuentra?
El objeto pertenece a un grupo de controles Active X dentro de 'Windows common Controls', y el archivo que los contiene se llama mscomctl.ocx
Como lo instalo?
La respuesta es sencilla, tal cual como utilizo cualquier objeto Active X en VB...
Listo!, ahora dentro de los controles disponibles se encuentra el listview, para ubicarlo les muestro cual es el simbolo que deben ver en la barra de herramientas...

Ahora para usarlo solo hay que arrastrar el icono hasta la ventana de la aplicacion !!!.
Veamos ahora como utilizar un control ListView
Utilizemos para estudiar un sencillo ejemplo en el cual ingresemos o quitemos items de productos para un sistema de facturacion...

Objetos a incluir en el formulario...
Una vez incluidos estos controles agregamos la ListView y comenzamos a trabajar con esta editando sus propiedades, esto se hace con el famoso 'Boton derecho del mouse (sobre la listview) -> Propiedades. Luego editamos las propiedades dejandolas de esta manera...
La solapa "General" cambiar lo siguiente...
En la solapa "Encabezados" de columna agregar 3...
De esta manera ya tenemos la lista con la estructura creada, ahora hace falta analizar el codigo que va definir como responde el programa.
Veamos cada seccion del codigo del formulario...
Option Explicit
Private Sub cmdAgregar_Click()
Call Agregar_Item
Call Vaciar_Campos
txtcodigo.SetFocus
End Sub
Este es el evento principal, lo unico que hace es llamar a una primera rutina que agrega el item a la lista, luego llama a otra que vacia el valor de los textboxes, para poder ingresar mas datos, y finalmente posiciona el cursor en textbox del codigo de producto.
Veamos con mas detalle la subrutina Agregar_Item:
Private Sub Agregar_Item()
Dim X As ListItem
Set X = ListView1.ListItems.Add(, , txtcodigo.Text)
X.Tag = txtcodigo.Text
X.SubItems(1) = txtDescripcion.Text
X.SubItems(2) = txtprecio.Text
End Sub
Vayamos de a una linea...
Dim X as ListItem
Declara un objeto llamado 'X' como un item de una listview, esto es para hacer referencia mas adelante a un determinado item de la lista.
Set X = ListView1.ListItems.Add(, , txtcodigo.Text)
Hasta ahora el objeto X no sabia a que lista hacia referencia. La instruccion Set da valor a objetos y X es un objeto listitem, ya que lo declaramos asi.
Entonces definimos a X como un nuevo objeto listitem dentro del objeto ListView1, y se le indica como parametro el valor de la primer columna del item, en este caso el codigo de producto que figura en el objeto txtcodigo
Ls sintaxis generica sería la siguiente...
Set ObjetoItem = NombreListview.Listitems.Add(,,ValorPrimeraColumna)
X.Tag = txtcodigo.Text
Ahora se define un TAG, que es la etiqueta que va a identificar ese item dentro de la lista, en este caso el tag debe ser el codigo de producto, ya que se supone que en una factura no se imprime mas de una vez un mismo producto.
X.SubItems(1) = txtDescripcion.Text
Es simplemente el valor de la segunda columna del item de la lista, en este caso la descripcion del producto que se encuentra en el objeto txtdescripcion.
X.SubItems(2) = txtprecio.Text
Obiamente el valor de la tercer columna del item de la lista.
Private Sub Vaciar_Campos()
txtcodigo.Text = ""
txtDescripcion.Text = ""
txtprecio.Text = ""
End Sub
Esta rutina solo limpia los tres campos textbox para que el usuario pueda escribir los datos del proximo item.
Private Sub cmdEliminar_Click()
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
End Sub
Esta rutina elimina el item de la list view seleccionado por el usuario. Para esto llama al metodo Remove, que toma como parametro el indice del item dentro de la lista. El indice es un valor que es conocido, ya que es el numero de indice del item seleccionado por el usuario, asi que sencillamente el parametro es ListView1.SelectedItem.Index
Este es todo el codigo necesario para el programa de ejemplo analizado, es muy sencillo y obviamente muy limitado, pero la estructura basica para desarrollar cualquier aplicacion que quiera utilizar una listview es la misma.
Imaginense que si uno quiere leer una tabla de una base de datos y mostrar los valores en una listview lo unico que hay que agregar a esto es el bucle que recorra la tabla, y en lugar de usar como origen de datos los objetos del formulario, usaria un recordset.
Como conclusion, las listview son un metodo muy practico de trabajar con listas de datos en pantalla, es un control que el usuario esta muy acostumbrado a ver, ya que es un control nativo de windows, y es muy sencillo de utilizar. Click aqui para descargarse el ejemplo.
Bueno, espero que les sea de utilidad, acepto sugerencias, preguntas e inquietudes acerca de este articulo, que dicho sea de paso es el primero que escribo.
ok ok pero si ocupo ligarlo ha una base de datos como le puedo hacer
Me encanta este control, pero ho he podido encontrar la dorma de mover los item de lugar, es decir en una lista por ejemplo de reproduccion de canciones como mover un item a la parte de arriba o abajo.
Gracias por la informacion.
esta chido me sirvio de mucho olles pero ahora quisiera saber como haserle para agregar estos datos que van alist view a un base de datos en acces de antemano te agradesco una pronta respuesta
seria bueno una informacion mas amplia sobre listview
gracias por toda esta informacion pero como le puedo hacer para realizar una busqueda y en este list view aparezcan los registros que quiero desde una base de datos
Que tal muy util el codigo pero como puedo hacer para ocultar una columna del listView, el ancho puede ser de 0 pero aun asi se puede abrir al ejecutar la aplicacion
muy bueno... los felicito
Me parece muy bueno y util la informacion acerca de este control y aunque todabia falta aprender mas sobre como utilizarlo a mi me sirvio mucho
gracias
Hola! queria ver si alguien me podia ayudar... tengo que poner diferentes lineas del listview en diferentes colores. Como hago?
Me sirvió de mucho tu infomacion pero igual que los demás necesito saber como enlazar esto a una data (Base De Datos) y como hacer que los datos de cada celda se direccionen hacia una celda diferente en Access, y si por favor de igual manera me podrían ayudar a encontrar un libro que trate acerca de todas o casi todas las funciones de visual Basic 6.0 y un correo a donde pueda mandar mis dudas, de antemano muchas gracias por la atención e información.