VB6 – Editar un ListView

Hace meses que no escribo y ya era hora!!!

Vuelvo de las vacaciones (más cansado que cuando me fui), pero vuelvo con nuevas historietas del VB6.

Para abrir boca me meto con el control ListView.
Todo viene a raíz de modificar una vieja aplicación, que lleva años dando un rendimiento y que como todo en este mundo, o se actualiza o muere.
O pasa de manejar un numero fijo de datos a manejar ‘n’ datos o se desinstala.

Una solución rápida y vistosa es la de sustituir unos cuantos TextBox y Labels por ListViews en modo rejilla.

Monto una aplicacion de prueba para realizar unos procedimientos, para el manejo de ListView, los mas genéricos posibles y asi poder utilizarlos en un futuro en otras aplicaciones.

Este es su único formulario de la aplicación:

Para utilizar un ListView necesitamos el componente:
“Microsoft Windows Common Controls 6.0 (SP6)”:

Para escribir en el ListView una serie de datos, a modo de ejemplo, creo el procedimento “Rellenar_ListView_01”. Procedimiento que ejecuto medianto un evento en el boton “cmdRellernar_01”

Evento Click del boton “cmdRellernar_01”:

Private Sub cmdRellenar_01_Click()
  '
  Call Rellenar_ListView_01(ListView_01)
  ''
End Sub

Procedimiento a estudio:

Public Sub Rellenar_ListView_01(ByRef objListView_01 As ListView)
  '
  ' PROCEDIMIENTO PARA RELLENAR UN LISTVIEW
  ' Paso por referencia el control ListView que deseo editar (más genérico imposible!)
  '
  Dim intL_Cont_01 As Integer
  '
  Dim strL_Cont_01 As String
  '
  Dim itmL_Aux_01 As ListItem
  '
  With objListView_01
    ' Modo "detalle" o rejilla
    .View = lvwReport
    ' Seleccion por linea
    .FullRowSelect = True
    ' Mostrar las líneas de la cuadrícula
    .GridLines = True
    ' No permitir la edición automática del texto
    .LabelEdit = lvwManual
    ' Permitir múltiple selección
    .MultiSelect = True
    ' Al perder el foco que siga viendo el que está seleccionado
    .HideSelection = False
  End With
  '
  ' Limpiamos el ListView
  objListView_01.ColumnHeaders.Clear
  objListView_01.ListItems.Clear
  '
  ' Insertamos las columnas con correspodiente 'Key', texto y anchura.
  With objListView_01.ColumnHeaders.Add(, "PasL", "PasL", 900)
    .Tag = "Número"
  End With
  With objListView_01.ColumnHeaders.Add(, "X", "X", 900)
    .Tag = "Número"
  End With
  With objListView_01.ColumnHeaders.Add(, "Y", "Y", 900)
    .Tag = "Número"
  End With
  With objListView_01.ColumnHeaders.Add(, "Diameter", "Diameter", 900)
    .Tag = "Texto"
  End With
  '
  ' Ahora para ver que todo sale a pedir de boca, inserto lineas de datos.
  ' Fijarse en como inserto el dato teniendo en cuenta la columna.
  '-------------------------------------'
  intL_Cont_01 = objListView_01.ListItems.Count + 1
  strL_Cont_01 = Format(intL_Cont_01, "00")
  '
  Set itmL_Aux_01 = objListView_01.ListItems.Add(intL_Cont_01, "PasL_" & strL_Cont_01, "PasL_" & strL_Cont_01)
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("X").SubItemIndex) = "111"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Y").SubItemIndex) = "222"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Diameter").SubItemIndex) = "D12"
  '-------------------------------------'
  '
  '-------------------------------------'
  intL_Cont_01 = objListView_01.ListItems.Count + 1
  strL_Cont_01 = Format(intL_Cont_01, "00")
  '
  Set itmL_Aux_01 = objListView_01.ListItems.Add(intL_Cont_01, "PasL_" & strL_Cont_01, "PasL_" & strL_Cont_01)
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("X").SubItemIndex) = "333"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Y").SubItemIndex) = "444"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Diameter").SubItemIndex) = "D12"
  '-------------------------------------'
  '
  '-------------------------------------'
  intL_Cont_01 = objListView_01.ListItems.Count + 1
  strL_Cont_01 = Format(intL_Cont_01, "00")
  '
  Set itmL_Aux_01 = objListView_01.ListItems.Add(intL_Cont_01, "PasL_" & strL_Cont_01, "PasL_" & strL_Cont_01)
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("X").SubItemIndex) = "555"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Y").SubItemIndex) = "666"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Diameter").SubItemIndex) = "D12"
  '-------------------------------------'
  '
  '-------------------------------------'
  intL_Cont_01 = objListView_01.ListItems.Count + 1
  strL_Cont_01 = Format(intL_Cont_01, "00")
  '
  Set itmL_Aux_01 = objListView_01.ListItems.Add(intL_Cont_01, "PasL_" & strL_Cont_01, "PasL_" & strL_Cont_01)
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("X").SubItemIndex) = "777"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Y").SubItemIndex) = "888"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Diameter").SubItemIndex) = "D12"
  '-------------------------------------'
  '
  '-------------------------------------'
  intL_Cont_01 = objListView_01.ListItems.Count + 1
  strL_Cont_01 = Format(intL_Cont_01, "00")
  '
  Set itmL_Aux_01 = objListView_01.ListItems.Add(intL_Cont_01, "PasL_" & strL_Cont_01, "PasL_" & strL_Cont_01)
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("X").SubItemIndex) = "999"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Y").SubItemIndex) = "111"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Diameter").SubItemIndex) = "D12"
  '-------------------------------------'
  '
  '-------------------------------------'
  intL_Cont_01 = objListView_01.ListItems.Count + 1
  strL_Cont_01 = Format(intL_Cont_01, "00")
  '
  Set itmL_Aux_01 = objListView_01.ListItems.Add(intL_Cont_01, "PasL_" & strL_Cont_01, "PasL_" & strL_Cont_01)
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("X").SubItemIndex) = "222"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Y").SubItemIndex) = "333"
  itmL_Aux_01.SubItems(objListView_01.ColumnHeaders("Diameter").SubItemIndex) = "D12"
  '-------------------------------------'
  ''
End Sub

Y el resultado es el siguiente:

Aunque esto puede parecer una tontería, pero para el que este comenzando con los ListView le puede parecer interesante.
Las entradas sobre los ListView no terminan aquí, pronto habrá mas.

Anuncios

Acerca de Robert Ale
Soy yo un simple tipo que quiere estar en la red... aunque no se si lo conseguiré algún día...

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: