作者yinjing (青)
站内Visual_Basic
标题Re: [VB6 ] MSHFlexGrid 排序问题
时间Thu Nov 27 12:31:37 2008
※ 引述《williewillie (williewillie)》之铭言:
: 除了在一开始使用sqlorder by xxx asc 指令排序外
: 有无办法
: 当我点选MSHFlexGrid的栏位时
: 让资料依照我点选的MSHFlexGrid栏位进行排序呢?
基本上我还没学那边,以下是书里面光碟范例档案,
就...... 麻烦自行研究吧 XD
Option Compare Text
Dim LastCol As Integer ' 上一次(最後)被按下的栏位
Dim LastSort As Integer ' 上一次(最後)排序的方式
Dim ChineseSortFactor As Integer
Private Sub Form_Load()
LastCol = -1
LastSort = 0
End Sub
Private Sub MSHFlexGrid1_Click()
' 先判断使用者按下的栏位(Col属性)是否等於上一次被按下的栏位
If MSHFlexGrid1.Col <> LastCol Then
' 决定并且记录最後排序的方式
LastSort = flexSortGenericAscending
Else
If LastSort = flexSortGenericAscending Then
LastSort = flexSortGenericDescending
Else
LastSort = flexSortGenericAscending
End If
End If
' 设定排序方式
If MSHFlexGrid1.TextMatrix(0, MSHFlexGrid1.Col) = "姓名" Then
MSHFlexGrid1.Sort = 9
Else
MSHFlexGrid1.Sort = LastSort
End If
' 记录最後被按下的栏位
LastCol = MSHFlexGrid1.Col
End Sub
Private Sub MSHFlexGrid1_Compare(ByVal Row1 As Long, ByVal Row2 As Long, Cmp
As Integer)
Dim data1 As String, data2 As String
' 读取第一列及第二列的资料
data1 = MSHFlexGrid1.TextMatrix(Row1, MSHFlexGrid1.Col)
data2 = MSHFlexGrid1.TextMatrix(Row2, MSHFlexGrid1.Col)
If data1 > data2 Then ' 第一列大於第二列
Cmp = IIf(LastSort = flexSortGenericAscending, 1, -1)
ElseIf data1 < data2 Then ' 第一列小於第二列
Cmp = IIf(LastSort = flexSortGenericAscending, -1, 1)
Else ' 第一列等於第二列
Cmp = 0
End If
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.195.121.101
1F:推 williewillie:大感谢~ 11/27 12:58
2F:推 williewillie:嘿~~我後来试过後 发现 有点问题 资料是会排序没错 11/27 17:24
3F:→ williewillie:可是小到大应该是XXX7 XXX8 XXX9 11/27 17:25
4F:→ williewillie:排序後却是XXX7 XXX9 XXX8 11/27 17:25
5F:推 williewillie:自答: 11/27 18:00
6F:→ williewillie: MSHFlexGrid1.Col) = "姓名"改成<>"" 11/27 18:01
7F:→ williewillie:没事了 感谢~ 11/27 18:01