Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[SOLUCIONADO] Ordenar listview por cabecera en vb 6.0

Estas en el tema de Ordenar listview por cabecera en vb 6.0 en el foro de Visual Basic clásico en Foros del Web. hola nuevamente les pido ayuda para lo sgte: ahora quiero ordenar un listview por su cabecera, tengo un ejemplo con un combobox de lo que ...
  #1 (permalink)  
Antiguo 20/06/2011, 16:30
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Ordenar listview por cabecera en vb 6.0

hola nuevamente les pido ayuda para lo sgte:

ahora quiero ordenar un listview por su cabecera, tengo un ejemplo con un combobox de lo que quiero hacer:

Public Sub ordenarproveedor()
If Me.cboordenar.Text = "Seleccione Órden" Then
Set rstproveedores = cnnADODB.Execute("select * from proveedores where codigoproveedor=0")
ElseIf Me.cboordenar.Text = "Por Código (Modo Creciente)" Then
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by codigoproveedor")
ElseIf Me.cboordenar.Text = "Por Código (Modo Decreciente)" Then
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by codigoproveedor desc")
ElseIf Me.cboordenar.Text = "Por Nombre (Modo Creciente)" Then
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by nombreproveedor")
ElseIf Me.cboordenar.Text = "Por Nombre (Modo Decreciente)" Then
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by nombreproveedor desc")
ElseIf Me.cboordenar.Text = "Por Dirección (Modo Creciente)" Then
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by direccionproveedor")
ElseIf Me.cboordenar.Text = "Por Dirección (Modo Decreciente)" Then
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by direccionproveedor desc")
ElseIf Me.cboordenar.Text = "Por Teléfono (Modo Creciente)" Then
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by telefonoproveedor")
Else
Set rstproveedores = cnnADODB.Execute("select * from proveedores order by telefonoproveedor desc")
End If
LVWproveedores.ListItems.Clear
While Not rstproveedores.EOF
On Error Resume Next
Set listaproveedores = LVWproveedores.ListItems.Add(, , rstproveedores(0))
listaproveedores.SubItems(1) = rstproveedores(1)
listaproveedores.SubItems(2) = rstproveedores(2)
listaproveedores.SubItems(3) = rstproveedores(3)
listaproveedores.SubItems(4) = rstproveedores(4)
rstproveedores.MoveNext
Wend
End Sub

mi idea es ordenar de forma creciente y decreciente al hacer click en la cabecera de la columna para eso tengo este evento del listview:

Private Sub LVWproveedores_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

End Sub

sólo que no sé hacer esto, ¿me pueden ayudar? se los agradezco.
  #2 (permalink)  
Antiguo 21/06/2011, 09:05
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: Ordenar listview por cabecera en vb 6.0

Hola!
Este CODE te puede ayuar:
Código vb:
Ver original
  1. 'ORDENAR LISTVIEW
  2.  
  3. Private Sub LISTVIEW_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
  4.     Ordenar_ListView LISTVIEW, ColumnHeader
  5. End Sub
  6.  
  7. Sub Ordenar_ListView(lsvListView As ListView, ColumnHeader As MSComctlLib.ColumnHeader)
  8.     With lsvListView
  9.         .SortOrder = (.SortOrder + 1) Mod 2
  10.         .SortKey = ColumnHeader.Index - 1
  11.         .Sorted = True
  12.     End With
  13. End Sub
  #3 (permalink)  
Antiguo 22/06/2011, 18:05
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Ordenar listview por cabecera en vb 6.0

hola lokoman, el código funciona de maravillas, sólo tengo una pregunta para hacerte: ¿puedo poner imágenes en las cabeceras de las columnas? para cuando haga click en la cabecera que me pueda ordenar de forma tanto creciente y decreciente o cuando haga click en las imágenes de la cabecera ordene tanto creciente y decreciente. ¿Me puedes aclarar esa duda? te lo agradezco.

Etiquetas: listview, vb, cabeceras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:32.