Re: [VB6 ] MSHFlexGrid 排序問題
※ 引述《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
推
11/27 12:58, , 1F
11/27 12:58, 1F
推
11/27 17:24, , 2F
11/27 17:24, 2F
→
11/27 17:25, , 3F
11/27 17:25, 3F
→
11/27 17:25, , 4F
11/27 17:25, 4F
推
11/27 18:00, , 5F
11/27 18:00, 5F
→
11/27 18:01, , 6F
11/27 18:01, 6F
→
11/27 18:01, , 7F
11/27 18:01, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):