USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Ordenar ListView
Carlos
não registrado
Postada em 26/08/2004 08:58 hs   
Bom Dia
estou com dificuldades de ordenar o listview, na verdade eu ate que consigo ordena-lo, porem todos os valores sao considerados como alfanumericos.
 
Quando tenho datas e numeros, as colunas do ListView sao ordenas como se fossem letras e eu gostaria que as datas fossem ordenadas por datas e os numeros por numeros.
 
Ex.: datas                        Numeros
 
01/01/2004                      10
01/01/2003                      1000 
01/01/2002                      1010
02/01/2004                      2000
 
A ordenacao acima trata tanto datas como numeros como String, nao possibilitando portanto a ordenacao exta do listview.
 
 
Obrigado
     
Roßerto
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 26/08/2004 11:39 hs            
 
Carlos veja esse exemplo.
para poder baixar, vc precisa ser registrado e logado no site
 
faça seu registro é FREE
 
Roberto
 
     
ventana
SANTOS
SP - BRASIL
Postada em 26/08/2004 22:25 hs            
Muito obrigado Roberto
 
Porem, quando clico no link acima, aparece a mensagem de pagina nao encontrada.
 
Sidnei
     
ventana
SANTOS
SP - BRASIL
Postada em 26/08/2004 22:31 hs            
Digitei parte do link acima e ja consegui localizar o arquivo para download.
 
obrigado
     
PC²
Pontos: 2843 Pontos: 2843
JUCUTUQUARA, VITÓRIA
ES - BRASIL
Postada em 06/09/2004 17:56 hs            
Use isto:
 
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
'Usaremos o "Tag" de cada ColumHeader para armazenar
'se a coluna recebe valores:
'       = N para Números
'       = D para Datas
'       = T para Textos
If ColumnHeader.Tag = "N" Then '
    SortListView ListView1, ColumnHeader.Index, ldtNumber, OrdAsc
ElseIf ColumnHeader.Tag = "T" Then
    SortListView ListView1, ColumnHeader.Index, ldtString, OrdAsc
Else
    SortListView ListView1, ColumnHeader.Index, ldtDateTime, True
End If
OrdAsc = Not OrdAsc
End Sub
 
 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Public Sub SortListView(ListView As ListView, ByVal Index As Integer, _
                ByVal DataType As ListDataType, ByVal Ascending As Boolean)
    On Error Resume Next
    Dim i As Integer
    Dim l As Long
    Dim strFormat As String
    Dim lngCursor As Long
    lngCursor = ListView.MousePointer
    ListView.MousePointer = vbHourglass
    LockWindowUpdate ListView.hwnd
   
    Dim blnRestoreFromTag As Boolean
   
    Select Case DataType
    Case ldtString
        blnRestoreFromTag = False
       
    Case ldtNumber
        strFormat = String$(20, "0") & "." & String$(10, "0")
        With ListView.ListItems
            If (Index = 1) Then
                For l = 1 To .Count
                    With .Item(l)
                        .Tag = .Text & Chr$(0) & .Tag
                        If IsNumeric(.Text) Then
                            If CDbl(.Text) >= 0 Then
                                .Text = Format(CDbl(.Text), strFormat)
                            Else
                                .Text = "&" & InvNumber(Format(0 - CDbl(.Text), strFormat))
                            End If
                        Else
                            .Text = ""
                        End If
                    End With
                Next l
            Else
                For l = 1 To .Count
                    With .Item(l).ListSubItems(Index - 1)
                        .Tag = .Text & Chr$(0) & .Tag
                        If IsNumeric(.Text) Then
                            If CDbl(.Text) >= 0 Then
                                .Text = Format(CDbl(.Text), strFormat)
                            Else
                                .Text = "&" & InvNumber(Format(0 - CDbl(.Text), strFormat))
                            End If
                        Else
                            .Text = ""
                        End If
                    End With
                Next l
            End If
        End With
       
        blnRestoreFromTag = True
   
    Case ldtDateTime
        strFormat = "YYYYMMDDHhNnSs"
       
        Dim dte As Date
      
        With ListView.ListItems
            If (Index = 1) Then
                For l = 1 To .Count
                    With .Item(l)
                        .Tag = .Text & Chr$(0) & .Tag
                        dte = CDate(.Text)
                        .Text = Format$(dte, strFormat)
                    End With
                Next l
            Else
                For l = 1 To .Count
                    With .Item(l).ListSubItems(Index - 1)
                        .Tag = .Text & Chr$(0) & .Tag
                        dte = CDate(.Text)
                        .Text = Format$(dte, strFormat)
                    End With
                Next l
            End If
        End With
       
        blnRestoreFromTag = True
       
    End Select
      
    ListView.SortOrder = IIf(Ascending, lvwAscending, lvwDescending)
    ListView.SortKey = Index - 1
    ListView.Sorted = True
       
    If blnRestoreFromTag Then
               
        With ListView.ListItems
            If (Index = 1) Then
                For l = 1 To .Count
                    With .Item(l)
                        i = InStr(.Tag, Chr$(0))
                        .Text = Left$(.Tag, i - 1)
                        .Tag = Mid$(.Tag, i + 1)
                    End With
                Next l
            Else
                For l = 1 To .Count
                    With .Item(l).ListSubItems(Index - 1)
                        i = InStr(.Tag, Chr$(0))
                        .Text = Left$(.Tag, i - 1)
                        .Tag = Mid$(.Tag, i + 1)
                    End With
                Next l
            End If
        End With
    End If
       
    LockWindowUpdate 0&
       
    ListView.MousePointer = lngCursor
End Sub

____________________________

PC²   T+

 

     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página