比如下面是一个MSHFlexGrid数据的话,我按列自动进行排序
排序前的数据如下:
---------
7 3 2 1 5
---------
1 2 3 4 5
----------
排序后的数据如下:
1 2 3 5 7
---------
4 3 2 5 1
----------
好像是用Compare和sort两种解决.本人实在不懂怎么完成,
希望哪位高手能帮帮忙,最好能帮忙写出代码,谢谢!
排序前的数据如下:
---------
7 3 2 1 5
---------
1 2 3 4 5
----------
排序后的数据如下:
1 2 3 5 7
---------
4 3 2 5 1
----------
好像是用Compare和sort两种解决.本人实在不懂怎么完成,
希望哪位高手能帮帮忙,最好能帮忙写出代码,谢谢!
Private Const STR_SORT_DESC = "▽"Private Sub Form_Load()
Dim i As Long
'添加一些试验数据
With MSHFlexGrid1
.Rows = 51
.Cols = 5
For i = 1 To 50
.TextMatrix(i, 0) = i
.TextMatrix(i, 1) = i + 10
.TextMatrix(i, 2) = i - 10
.TextMatrix(i, 3) = i + 20
.TextMatrix(i, 4) = i - 20
Next
End With
End Sub'排序函数
Public Sub Sort(sgrd As MSHFlexGrid, y As Single)
With sgrd
If y >= .RowPos(0) And y < .RowPos(1) Then
If .Tag <> "" Then
If .Tag <> .Col Then
.TextMatrix(0, .Tag) = Left(.TextMatrix(0, .Tag), Len(.TextMatrix(0, .Tag)) - 1)
End If
End If
If Right(.TextMatrix(0, .Col), 1) = STR_SORT_ASC Then
.Sort = flexSortGenericAscending
.TextMatrix(0, .Col) = Replace(.TextMatrix(0, .Col), STR_SORT_ASC, STR_SORT_DESC)
ElseIf Right(.TextMatrix(0, .Col), 1) = STR_SORT_DESC Then
.Sort = flexSortGenericDescending
.TextMatrix(0, .Col) = Replace(.TextMatrix(0, .Col), STR_SORT_DESC, STR_SORT_ASC)
Else
.Sort = flexSortGenericDescending
.TextMatrix(0, .Col) = .TextMatrix(0, .Col) & STR_SORT_ASC
End If
.Tag = .Col
End If
End With
End SubPrivate Sub MSHFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Sort MSHFlexGrid1, y
End Sub
][/code]
不过,还是要谢谢你.你如果知道列排序的话,希望请你再帮我一次,谢谢!
或者先定位行,取出该行的所有数据到数组,在数组内完成排序,再填充排序好的数据
我只是想要一些实例代码参考.谢谢哪位,真有本事
高手帮帮忙,谢谢!
Private Sub Command1_Click()
'根据第1行内容进行选择排序
'通过ColPosition属性调整列顺序达到排序效果
Dim i As Long, j As Long, k As Long
With MSHFlexGrid1
For i = 1 To .Cols - 2
k = i
For j = i + 1 To .Cols - 1
If CLng(.TextMatrix(1, j)) < CLng(.TextMatrix(1, k)) Then
k = j
End If
Next
If k <> i Then
.ColPosition(k) = i
.ColPosition(i + 1) = k
End If
Next
End With
End SubPrivate Sub Form_Load()
'初始化表格,生成示例数据
With MSHFlexGrid1
.FixedCols = 1
.FixedRows = 1
.Rows = 2
.Cols = 6
.AddItem vbTab & "7" & vbTab & "3" & vbTab & "2" & vbTab & "1" & vbTab & "5"
.AddItem vbTab & "1" & vbTab & "2" & vbTab & "3" & vbTab & "4" & vbTab & "5"
.RemoveItem 1
End With
End Sub