按下鼠标后拖动,可以改变字段的顺序的效果怎么实现,MSHFlexGrid!

allboy 2003-10-20 10:18:38
我要像access2000那样按下鼠标后拖动,可以改变字段的顺序!
我只能开100分的贴子,答对我再开贴送100分!
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
allboy 2003-10-20
  • 打赏
  • 举报
回复
谢谢 ok 结分
守城小轩 2003-10-20
  • 打赏
  • 举报
回复
应该能满足你的要求,而且加了个简单的排序!
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
射天狼 2003-10-20
  • 打赏
  • 举报
回复
用LISTVIEW可以轻松实现~~

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧