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.
ME funciono de maravilla y le agrague otros campos, pero ahora lo tengo enlazado con una BD en access y cuando presiono el boton agregar, me lo agrega, pero quisiera que me siguiera mostrando otros registros, pero no, me limpia los Text y hasta allí, como hago para que me muestre mas registros de la BD, para seguir agregando. Te agradezco de antemano por tu respuesta. Ok. Gracias
En realidad, la explicación es exelente estoy agradecido por que he comprendido, por lo menos esta parte
Pues la verdad me sirvio bastante la informacion pero quisiera saber como le hago que al darle click a un elemento de un menu me aplique directamente toda la informacion que yo quiera en el listview que este usando GRACIAS
gracias, me gusto la explicacion pero ahora quisiera saber como le habo para que permanesca activo ese control ya que cuando entra a visual basic 6.0 me marca error ya que me dice que ese control no es recargable como le hago cargable para cuando entre no me marque error....
gracias
Bueno quiero decirte q igual con tu Tag se puede duplicar el codigo de lal Factura en el Ejm. ahi no debe de duplicarse y si se duplica tiene q solamente sumarse el precio...si puedes me mandas como hacerlo ya q yo tbm estoy intentando hacer eso
necesito insertar los datos de mi listview en sql, el list tiene 3 col. como hago esto?