当前位置:编程学习 > VB >>

如何实现mshflexgrid控件的行上下移动

如何实现人员顺序上下任意调整? 没人回复?自己顶一个。 mshflexgrid 是支持通过代码逐单元格对显示内容更改的。因此,如果仅仅是显示的话,只要写代码来替换这些内容就可以了。

但如果还需要通过界面编辑来更新绑定的数据库记录集的话,就麻烦一点,需求通过你的代码来更新记录。 我指的是数据库载入后,如何调整行的顺序,数据库按更新后的写入,没有关系的。 数据库表中的记录没有顺序的概念。即使后写入的记录,也有可能在物理位置上处于其他记录前面。

如果需要一个记录集在查询后有固定顺序,可以在表中增加一个字段来表示记录顺序,并在查询时就上 Order By 子句。 我明白你的意思,但我要的是在表格上调整行顺序的语句,不需要把顺序保存到数据库,下次加载再重新调整。 那还有什么困难?mshflexgrid 的单元格是可以任意改写的呀。
我指的是整行的上下移动,不是改写数据,可以发个代码看看吗? 整行的移动,就是首先删除一行,然后将这行内容插入到另一个位置。记住,计算机上内容任何一种形式的改变,无非就是数据的重写。 下面是一个利用 RemoveItem 和 AddIem 方法,移动行的例子。按小键盘的上下键(8、2,不要锁 Num Lock),将使当前选中的行上或下移。
Private Sub Form_Load()
With MSFlexGrid1
    .FixedRows = 0
    .Rows = 0
    .AddItem "A" & vbTab & 0
    .AddItem "B" & vbTab & 1
    .AddItem "C" & vbTab & 2
    .AddItem "D" & vbTab & 3
End With
End Sub

Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim strTmp As String, n As Long

If KeyCode <> vbKeyNumpad8 And KeyCode <> vbKeyNumpad2 Then Exit Sub

With MSFlexGrid1

    n = .Row
    strTmp = .TextMatrix(n, 0) & vbTab & .TextMatrix(n, 1)
    If KeyCode = vbKeyNumpad8 And n > 0 Then
        .RemoveItem n
        .AddItem strTmp, n - 1
        .Row = n - 1
    ElseIf KeyCode = vbKeyNumpad2 And n < .Rows - 1 Then
        .RemoveItem n
        .AddItem strTmp, n + 1
        .Row = n + 1
    End If
    
End With
End Sub
MSHFlexGrid1.RowPosition(2) = 3
这样就可以把第二行挪到第三行去 10 楼的方法很好。
Option Explicit

Private Sub Form_Load()
With MSFlexGrid1
    .FixedRows = 0
    .Rows = 0
    .AddItem "A" & vbTab & 0
    .AddItem "B" & vbTab & 1
    .AddItem "C" & vbTab & 2
    .AddItem "D" & vbTab & 3
End With
End Sub

Private Sub MSFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim n As Long

With MSFlexGrid1

    n = .Row
    If KeyCode = vbKeyNumpad8 And n > 0 Then
        .RowPosition(n) = n - 1
        .Row = n - 1
    ElseIf KeyCode = vbKeyNumpad2 And n < .Rows - 1 Then
        .RowPosition(n) = n + 1
        .Row = n + 1
    End If
    
End With
End Sub
补充:VB ,  控件
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,