大家给我看下我的MSFlexGrid排序函数,作用是左键点击列标题时,进行升序或者降序排列MSFlexGrid中的数据,在使用时发现对于以下这样的数据
12-001
12-002
12-003
12-004
12-005
12-006
12-007
12-008
就不能排序了。
12-001
13-001
14-001
15-001
16-001
17-001
18-001
19-001
这样的数据好象就可以排序,不知道毛病在哪请高手们帮忙看下完善这个函数啦
Option ExplicitPublic Const STR_SORT_ASC = "△"
Public Const STR_SORT_DESC = "▽"'//排序函数
Public Sub Sort(sgrd As MSFlexGrid, 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 Sub
12-001
12-002
12-003
12-004
12-005
12-006
12-007
12-008
就不能排序了。
12-001
13-001
14-001
15-001
16-001
17-001
18-001
19-001
这样的数据好象就可以排序,不知道毛病在哪请高手们帮忙看下完善这个函数啦
Option ExplicitPublic Const STR_SORT_ASC = "△"
Public Const STR_SORT_DESC = "▽"'//排序函数
Public Sub Sort(sgrd As MSFlexGrid, 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 Sub
解决方案 »
- 好莱的数据库问题,请教~~~
- 谁能帮我总结一下vb6语句的所有简化形式
- 好久没用vb ,一开始就遇到不会的错误.拜托了(在线等)
- 关于WndProc的学习, VB利用textbox编辑ListView的SubItem
- 当Linux作为FTP服务器时,使用VB的Inet控件连接,出现了问题,大侠能帮着看看吗?谢谢
- 在VB应用程序中应用RDO控件往SQLSERVER2000中插入IMAGE类型数据出错如何解决?
- 仍然是“无法为更新行集定位:一些值可能已在最后读取后改变”
- listbox 的有关问题,谢谢大家!!!!!!
- 前几天问了一个非常简单的问题,现在再补上一问。非常简单,欢迎回答!
- 高手快请进!!
- 程序中使用Agent,人物在显示中文时比显示英文快很多,还没看清楚就PASS了,有什么命令可以使得他在显示中文时慢些?
- 大家帮我看下我的MSFlexGrid排序函数(有代码),有些数据不能排序
再发一遍巴
Public Sub SortMsflex(ByVal Flex As MSFlexGrid)
With Flex
.MousePointer = vbHourglass
If .MouseRow = 0 Then
.Col = .MouseCol
If bSortOrder = False Then
.Sort = flexSortGenericDescending
bSortOrder = True
Else
.Sort = flexSortGenericAscending
bSortOrder = False
End If
.Col = 1
.ColSel = .Cols - 1
End If
.MousePointer = vbDefault
End With
End Sub
基本能满足你的要求 呵呵
12-001
12-002
12-003
12-004
12-005
12-006
12-007
12-008
不能排序
我也是按
.Sort = flexSortGenericAscending
.Sort = flexSortGenericDescending
来处理,对上述数据不起作用
然后在MSFlexGrid的Compare事件里自己写排序函数就可以了啊
.Sort = 5 '字符串排升序
.TextMatrix(0, .Col) = Replace(.TextMatrix(0, .Col), STR_SORT_ASC, STR_SORT_DESC)
ElseIf Right(.TextMatrix(0, .Col), 1) = STR_SORT_DESC Then
.Sort = 6 '字符串排倒序
.TextMatrix(0, .Col) = Replace(.TextMatrix(0, .Col), STR_SORT_DESC, STR_SORT_ASC)
Else
.Sort = 6
.TextMatrix(0, .Col) = .TextMatrix(0, .Col) & STR_SORT_ASC
End If