Option Explicit
Private Sub Form_Load()
Dim N As Integer
With ListView1
.View = lvwReport
.LabelEdit = lvwManual
'add sample columns
.ColumnHeaders.Add , , "Number", 900
.ColumnHeaders.Add , , "Font", 3000
'add sample items
For N = 1 To Screen.FontCount - 1
.ListItems.Add(, , N).SubItems(1) = Screen.Fonts(N)
Next
End With
End Sub
Private Sub Form_Resize()
ListView1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)
With ListView1
.Sorted = False
If .SortKey <> ColumnHeader.Index - 1 Then
.SortKey = ColumnHeader.Index - 1
Else
.SortOrder = 1 - .SortOrder
End If
If ColumnHeader.Index = 1 Then
SortNumeric
Else
.Sorted = True
End If
End With
End Sub
Sub SortNumeric()
Dim S As String * 10, N As Integer
With ListView1
'justify the text using padding spaces
For N = 1 To .ListItems.Count
S = vbNullString
If .SortKey Then
RSet S = .ListItems(N).SubItems(.SortKey)
.ListItems(N).SubItems(.SortKey) = S
Else
RSet S = .ListItems(N)
.ListItems(N).Text = S
End If
Next
'sort column using "justified" text
.Sorted = True
'trim spaces from the text
For N = 1 To .ListItems.Count
If .SortKey Then
.ListItems(N).SubItems(.SortKey) = _
LTrim$(.ListItems(N).SubItems(.SortKey))
Else
.ListItems(N).Text = LTrim$(.ListItems(N))
End If
Next
End With
End Sub