我已在程序中设置了msflexgrid.sort = 9 ,请问,要如何写Compare事件中的代码才能实现自定义对一指定列进行排序,最好能给出一段代码来。谢谢!
解决方案 »
- 不论窗体上的任何控件有焦点,任何时候按下F5键时,自动调用一个函数A(),如何弄。给一个小例子,谢谢!
- combobox问题
- 如何判断数据库是否已经联接?
- 请问各位:在vb中如何添加对word应用程序的操作的类的引用呀??? 谢谢!!
- 数据库操作API函数的意思
- 关于水晶报表——我从来没用过,第一次接触
- 有做过股票分析软件的高手吗?
- 怎样才能知道filecopy 时,已将文件copy完毕
- http://www.csdn.net/expert/topic/493/493873.shtm 帮忙看一看吧!
- 关于使用ADODB.CONNECTION连接SQL的问题?
- 如何在vb6中实现access2000数据库导入与导出,以及解决连access2000数据库的版本冲突问题。
- 请问如何修改显示器的刷新频率?
Dim i, startCol As Integer If row1 > 1 Then
With HGrid
For i = 1 To 2
'Debug.Print hgrid.TextMatrix(0, i)
If HGrid.TextMatrix(0, i) = "单位名称" Then
startCol = i
Exit For
End If
Next i
startCol = startCol + 1
If IsNumeric(.TextMatrix(3, CurCol)) Then
If bSort = False Then
'If .TextMatrix(Row1, curCol) > .TextMatrix(Row1, curCol) Then
If CCur(.TextMatrix(row1, CurCol)) > CCur(.TextMatrix(row2, CurCol)) Then
Cmp = 1
ElseIf CCur(.TextMatrix(row1, CurCol)) < CCur(.TextMatrix(row2, CurCol)) Then
Cmp = -1
Else
If .TextMatrix(row1, 1) > .TextMatrix(row2, 1) Then
Cmp = 1
ElseIf .TextMatrix(row1, 1) < .TextMatrix(row2, 1) Then
Cmp = -1
Else
If CCur(.TextMatrix(row1, startCol)) > CCur(.TextMatrix(row2, startCol)) Then
Cmp = 1
ElseIf CCur(.TextMatrix(row1, startCol)) < CCur(.TextMatrix(row2, startCol)) Then
Cmp = -1
Else
Cmp = 0
End If
End If
End If
ElseIf bSort = True Then
If CCur(.TextMatrix(row1, CurCol)) > CCur(.TextMatrix(row2, CurCol)) Then
Cmp = -1
ElseIf CCur(.TextMatrix(row1, CurCol)) < CCur(.TextMatrix(row2, CurCol)) Then
Cmp = 1
Else
If .TextMatrix(row1, 1) > .TextMatrix(row2, 1) Then
Cmp = -1
ElseIf .TextMatrix(row1, 1) < .TextMatrix(row2, 1) Then
Cmp = 1
Else
'年度永远是升序
If CCur(.TextMatrix(row1, startCol)) > CCur(.TextMatrix(row2, startCol)) Then
Cmp = 1
ElseIf CCur(.TextMatrix(row1, startCol)) < CCur(.TextMatrix(row2, startCol)) Then
Cmp = -1
Else
Cmp = 0
End If
End If
End If
End If
Else
If bSort = False Then
'If .TextMatrix(Row1, curCol) > .TextMatrix(Row1, curCol) Then
If .TextMatrix(row1, CurCol) > .TextMatrix(row2, CurCol) Then
Cmp = 1
ElseIf .TextMatrix(row1, CurCol) < .TextMatrix(row2, CurCol) Then
Cmp = -1
Else
If .TextMatrix(row1, 1) > .TextMatrix(row2, 1) Then
Cmp = 1
ElseIf .TextMatrix(row1, 1) < .TextMatrix(row2, 1) Then
Cmp = -1
Else
If .TextMatrix(row1, startCol) > .TextMatrix(row2, startCol) Then
Cmp = 1
ElseIf .TextMatrix(row1, startCol) < .TextMatrix(row2, startCol) Then
Cmp = -1
Else
Cmp = 0
End If
End If
End If
ElseIf bSort = True Then
If .TextMatrix(row1, CurCol) > .TextMatrix(row2, CurCol) Then
Cmp = -1
ElseIf .TextMatrix(row1, CurCol) < .TextMatrix(row2, CurCol) Then
Cmp = 1
Else
If .TextMatrix(row1, 1) > .TextMatrix(row2, 1) Then
Cmp = -1
ElseIf .TextMatrix(row1, 1) < .TextMatrix(row2, 1) Then
Cmp = 1
Else
'年度永远是升序
If .TextMatrix(row1, startCol) > .TextMatrix(row2, startCol) Then
Cmp = 1
ElseIf .TextMatrix(row1, startCol) < .TextMatrix(row2, startCol) Then
Cmp = -1
Else
Cmp = 0
End If
End If
End If
End If
End If
End With
End If
是不是在Compare事件中比较两个(Row1,Row2)指定的单元值,然后据此实置cmp值,然后,compare事件会自动进行排序了。如要对 colsel = 3 的列进行排序,Rows = 5,则sub msfgrid_dblclick()
for i=1 to 4
'//此处是你的贴上的比较程序
msfgrid_compare .row,.row+1,cmp
next
end sub不知是否如此用法?