film indir
Aralık
11th 2007
Listview Objesinde Sayi Ve Tarih Siralamasi

Posted under Visual Basic



Hepimizin bildigi gibi listview nesnesinde kolon icerigi sayi yada tarih olsa bile listview bu icerigi string olarak kabul edip siralamaktadir.
Asagidaki fonksiyon ve örnek kodlar bu sorunun cozumu icin gelistirilmistir.

Asagidaki fonksiyonu bir module yada form objesinin kod kismina kopyalayiniz.

Fonksiyon


Option Explicit

Public Sub SortListView(ListViewObject As ListView, _
                        ByVal ColumnHeader As MSComctlLib.ColumnHeader)
‘**********************************************************************
‘Purpose      : Sort list view items
‘Input        : ListView object, Selected column
‘               ListViewObject : ListView object
‘               ColumnHeader   : Selected column
‘Output       : -
‘Return value : -
‘Date         : 23.09.2003
‘Author       : Algorithm : Iuri Applonio
‘               Code      : Murat Aras
‘Modification : -
‘**********************************************************************
    
    Dim strItem As String               ‘List item
    Dim intMaxItemLength As Integer     ‘Max. length of list items
    Dim intCounter As Integer           ‘Counter
    
    With ListViewObject
        ’Set sorted property of listview
        .Sorted = False
        ’Add temporary column to sort
        .ColumnHeaders.Add , , , 0
    
        ’Select first item from list view
        ’If first column
        If ColumnHeader.Index = 1 Then
            strItem = .ListItems(1)
            ’If another column
        Else
            strItem = .ListItems(1).SubItems(ColumnHeader.Index - 1)
        End If
    End With
    
    ’Date type?
    If IsDate(strItem) Then
        With ListViewObject
            ’If first column
            If ColumnHeader.Index = 1 Then
                For intCounter = 1 To .ListItems.Count
                    ’Get list item
                    strItem = Trim(.ListItems(intCounter))
                    ’Add list item to last column in new format to sort
                    .ListItems(intCounter).SubItems(.ColumnHeaders.Count - 1) = Format(strItem, “yyyymmddHHMMSS”)
                Next

            ’If another column
            Else
                For intCounter = 1 To .ListItems.Count
                    ’Get sub item
                    strItem = Trim(.ListItems(intCounter).SubItems(ColumnHeader.Index - 1))
                    ’Add sub item to last column in new format to sort
                    .ListItems(intCounter).SubItems(.ColumnHeaders.Count - 1) = Format(strItem, “yyyymmddHHMMSS”)
                Next
            End If
            ’Set sort key property (temporary column)
            .SortKey = .ColumnHeaders.Count - 1
        End With
    ’Numberic type?
    ElseIf IsNumeric(strItem) Then
        With ListViewObject
            ’Set start up value for maximum length of items
            intMaxItemLength = 0
            ’If first column
            If ColumnHeader.Index = 1 Then
                ’Find max. length of items
                For intCounter = 1 To .ListItems.Count
                    strItem = Trim(Replace(Replace(.ListItems(intCounter), “,”, “”), “.”, “”))
                    If Len(strItem) > intMaxItemLength Then
                        intMaxItemLength = Len(strItem)
                    End If
                Next
                For intCounter = 1 To .ListItems.Count
                    ’Get sub item
                    strItem = Trim(Replace(Replace(.ListItems(intCounter), “,”, “”), “.”, “”))
                    ’Add sub item to last column in new format to sort
                    .ListItems(intCounter).SubItems(.ColumnHeaders.Count - 1) = “0″ & String(intMaxItemLength - Len(strItem), “0″) & strItem
                Next
            ’If another column
            Else
                ’Find max. length of items
                For intCounter = 1 To .ListItems.Count
                    strItem = Trim(Replace(Replace(.ListItems(intCounter).SubItems(ColumnHeader.Index - 1), “,”, “”), “.”, “”))
                    If Len(strItem) > intMaxItemLength Then
                        intMaxItemLength = Len(strItem)
                    End If
                Next
                For intCounter = 1 To .ListItems.Count
                    ’Get sub item
                    strItem = Trim(Replace(Replace(.ListItems(intCounter).SubItems(ColumnHeader.Index - 1), “,”, “”), “.”, “”))
                    ’Add sub item to last column in new format to sort
                    .ListItems(intCounter).SubItems(.ColumnHeaders.Count - 1) = “0″ & String(intMaxItemLength - Len(strItem), “0″) & strItem
                Next
            End If
            ’Set sort key property (temporary column)
            .SortKey = .ColumnHeaders.Count - 1
        End With
    ’Another type?
    Else
        ListViewObject.SortKey = ColumnHeader.Index - 1
    End If
    
    ’Set properties of list view
    With ListViewObject
        ’Change the sort order
        .SortOrder = 1 - .SortOrder
        ’Set sorted property
        .Sorted = True
        ’Remove temporary column
        .ColumnHeaders.Remove .ColumnHeaders.Count
    End With
    
End Sub

Ornek kullanim


Bir form uzerine bir listview nesnesi koyarak asagidaki kodu form objesinin kod bolumune yapistiriniz ve projeyi calistiriniz.

Option Explicit

Private Sub Form_Load()

    ’Kolonlari ekliyoruz
    With ListView1.ColumnHeaders
        .Add , , “Text Kolon”, 2000
        .Add , , “Number Kolon”, 2000
        .Add , , “Date Kolon”, 2000
    End With

    ’Elemanlari ekliyoruz
    With ListView1
        .ListItems.Add , , “A”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “1″
            .SubItems(2) = “20.01.2003″
        End With
        .ListItems.Add , , “B”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “10″
            .SubItems(2) = “21.01.2003″
        End With
        .ListItems.Add , , “C”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “100″
            .SubItems(2) = “22.01.2003″
        End With
        .ListItems.Add , , “D”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “2″
            .SubItems(2) = “10.02.2003″
        End With
        .ListItems.Add , , “D”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “20″
            .SubItems(2) = “11.02.2003″
        End With
        .ListItems.Add , , “E”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “200″
            .SubItems(2) = “12.02.2003″
        End With
        .ListItems.Add , , “F”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “3″
            .SubItems(2) = “01.03.2003″
        End With
        .ListItems.Add , , “G”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “30″
            .SubItems(2) = “02.03.2003″
        End With
        .ListItems.Add , , “H”
        With .ListItems(.ListItems.Count)
            .SubItems(1) = “300″
            .SubItems(2) = “03.03.2003″
        End With
    End With

    ’Gorunumu rapor olarak atiyoruz
    ListView1.View = lvwReport
    
End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

‘List view siralama algoritmasi
    ’With ListView1
    ’    .SortKey = ColumnHeader.Index - 1
    ’    .SortOrder = 1 - .SortOrder
    ’    .Sorted = True
    ’End With

‘Yeni list view siralama algoritmasi
    SortListView ListView1, ColumnHeader

End Sub

ListView1_ColumnClick olayinda kesmeleri kaldirarak ve yer degistirerek normal siralama algoritmasi ile yazmis oldugumuz siralama algoritmasi arasindaki farklari gorebilirsiniz.

Trackback URI | Comments RSS

Yorum Yaz - Leave a Reply

yeliiniz Silinmitir.Ltfen Sayfanzdan Kodu Kaldrnz. Sayfa Bloggoayrılık yazılarıoyunlarkurye web tasarımı broşürlük dizi izle dizi izleKombi Tesisat Radyo DinleChat paysafe paysafe kartSohbet arkadaş travestitravesti travesti travesti Film izle Sicak Videolar Porno izle film izle e-okul arog Ask-i Memnu Sehitler Olmez sohbet Chat K�zlarla Sohbet sohbet chat kale kapi mirc Bedava Program Yukle Turkce Program Indir Celik Konstr�ksiyon evden eve nakliyat Toplist