MSFlexGrid強制整行實現表頭排序(雙向)

發表于:2007-05-25來源:作者:點擊數: 標簽:MSFlexGrid強制整行表頭實現
'******************************************** ' MSF lexGrid在強制整行選擇的情況下實現表頭排序 ' '功能:在單擊表頭時根據當前列進行排序,再次單 '擊反序排列。單擊數據區域時進行整行選擇 ' '2005-09-21 FieldMAX '*********************************
'********************************************
'MSFlexGrid在強制整行選擇的情況下實現表頭排序
'
'功能:在單擊表頭時根據當前列進行排序,再次單
'      擊反序排列。單擊數據區域時進行整行選擇
'
'2005-09-21 FieldMAX
'********************************************

Private Sub Form_Load()
'創建一個8*8的MSFlexGrid并在其中填入隨機數
Dim i As Long
Dim j As Long
MSFlexGrid1.Rows = 8
MSFlexGrid1.Cols = 8
MSFlexGrid1.FormatString = "|A|B|C|D|E|F|G"
For i = 0 To 7
    MSFlexGrid1.ColWidth(i) = 615
Next
For i = 1 To 7
    MSFlexGrid1.TextMatrix(i, 0) = i
    For j = 1 To 7
        MSFlexGrid1.TextMatrix(i, j) = Int(Rnd * 1000)
        n = n + 1
    Next
Next
End Sub

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
'在MSFlexGrid的實際應用中經常需要強制整行選并且還需要排序功能,
'但是由于MSFlexGrid本身的缺陷,在正常情況下是無法實現兩者兼得的。
'唯一的變通方法就是使用MouseDown或MouseUp事件獨有的"X","Y"坐標來
'確定點擊的列,再進行排序。
'這個排序程序已經經過修改,可以實現升序和降序兩種排序同時存在。
    Dim i As Long
    Dim j As Long
    Dim Cw As Long
    '如果Y坐標點擊的是表頭區域
    If y < MSFlexGrid1.RowHeight(0) Then
        Cw = 0
    '用循環語句判斷X在那一列,I代表列數
        For i = 0 To MSFlexGrid1.Cols - 1
            Cw = Cw + MSFlexGrid1.ColWidth(i)
            If x < Cw Then Exit For
        Next
        If i < MSFlexGrid1.Cols Then
        '↑
            If Left(MSFlexGrid1.TextMatrix(0, i), 1) <> "↓" Then
                For j = 0 To 7
                    If Left(MSFlexGrid1.TextMatrix(0, j), 1) = "↓" Or Left(MSFlexGrid1.TextMatrix(0, j), 1) = "↑" Then MSFlexGrid1.TextMatrix(0, j) = Mid(MSFlexGrid1.TextMatrix(0, j), 2)
                Next
                MSFlexGrid1.Col = i   '定位列坐標
                MSFlexGrid1.Sort = 1    '進行升序排列
                MSFlexGrid1.TextMatrix(0, i) = "↓" & MSFlexGrid1.TextMatrix(0, i)
            Else
                For j = 0 To 7
                    If Left(MSFlexGrid1.TextMatrix(0, j), 1) = "↓" Or Left(MSFlexGrid1.TextMatrix(0, j), 1) = "↑" Then MSFlexGrid1.TextMatrix(0, j) = Mid(MSFlexGrid1.TextMatrix(0, j), 2)
                Next
                MSFlexGrid1.Col = i   '定位列坐標
                MSFlexGrid1.Sort = 2    '進行升序排列
                MSFlexGrid1.TextMatrix(0, i) = "↑" & MSFlexGrid1.TextMatrix(0, i)
            End If
        End If
    End If
End Sub

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97