我要像access2000那样按下鼠标后拖动,可以改变字段的顺序!
我只能开100分的贴子,答对我再开贴送100分!

解决方案 »

  1.   

    应该能满足你的要求,而且加了个简单的排序!
    Option Compare TextDim LastCol As Integer  ' 上一次(最后)被按下的字段
    Dim LastSort As Integer ' 上一次(最后)排序的方式
    Dim ChineseSortFactor As IntegerPrivate Sub Form_Load()
        LastCol = -1
        LastSort = 0
    End SubPrivate 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 SubPrivate 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