Re: [VB6 ] MSHFlexGrid 排序問題

看板Visual_Basic作者 (青)時間17年前 (2008/11/27 12:31), 編輯推噓3(304)
留言7則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
可是小到大應該是XXX7 XXX8 XXX9
11/27 17:25, 3F

11/27 17:25, , 4F
排序後卻是XXX7 XXX9 XXX8
11/27 17:25, 4F

11/27 18:00, , 5F
自答:
11/27 18:00, 5F

11/27 18:01, , 6F
MSHFlexGrid1.Col) = "姓名"改成<>""
11/27 18:01, 6F

11/27 18:01, , 7F
沒事了 感謝~
11/27 18:01, 7F
文章代碼(AID): #19BYAizZ (Visual_Basic)
文章代碼(AID): #19BYAizZ (Visual_Basic)