用户自定义事件
取得systemkey的键值,移动焦点即可。
或者利用API,senhandle()也可实现。具体的参数我忘了,可以查一下。

解决方案 »

  1.   

    用keydown事件
    if keycode=vbenter then 移动焦点
      

  2.   

    你用哪种grid?告诉我我给你代码.
      

  3.   

    更正:若是datagrid应用AfterColEdit事件
      

  4.   

    泰山:我用的是TDBGrid,谢谢各位热心人!!
      

  5.   

    对不起,我这里没有TDBGrid,不过你找找它哪个键盘事件里面有ASCII码,然后在里面写移动焦点的代码就可以了,不同的grid是不一样的.
      

  6.   

    泰山:有DBgrid的例子让我看看也可以,我下午就给分,关键是怎样取得当前的焦点所在的列?
      

  7.   

    Private Sub DBGrid1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
    DBGrid1.Col = DBGrid1.Col + 1
    End If
    End Sub
      

  8.   

    或者
    Private Sub DBGrid1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
    DBGrid1.Row = DBGrid1.Row + 1
    End If
    End Sub
      

  9.   

    在keypress事件中
    If KeyAscii = vbKeyReturn Then
          With grid
                If .Row < .Rows - 1 Then
                   .SetFocus
                   SendKeys "{down}"
                ElseIf .Col < .Cols - 1 Then
                     .SetFocus
                    DoEvents
                    nCol = .Col
                    nRow = .Row
                    .Row = 1
                    SendKeys "{right}"
                End If
                KeyAscii = 0
            End With
        End If
    这是行的,相反可以找到列的转化
      

  10.   

    Private Sub DataGrid1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
    SendKeys "{TAB}"
    End If
    End Sub
      

  11.   

    这样也可以
    Private Sub DBGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyReturn Then
        If DBGrid1.Col = DBGrid1.Columns.Count - 1 Then
            DBGrid1.Col = 0
        Else
            DBGrid1.Col = DBGrid1.Col + 1
        End If
    End If
    End Sub
      

  12.   

    lihonggen0(用VB):不行,焦点不是在grid的列之间跳,而是跳到grid以外的其他对象上了,:iceberg_zheng(冰山)的方法可行,我先试试再说