以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]小键盘右键略过锁定列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25452)

--  作者:chnfo
--  发布时间:2012/11/9 16:37:00
--  [求助]小键盘右键略过锁定列
在表A中有几个锁定列,分别是2456列

现在光标停留在第一列上,希望按一下小键盘的右方向键,则光标略过第2列,停留在本行的第3列上,再按一上右方向键,焦点略过456列,停留在本行的第7列上。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小键盘右移略过锁定列.table


只是示例,真正应用的时候,锁定哪些列是不固定的。
[此贴子已经被作者于2012-11-9 16:40:06编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/9 16:53:00
--  
简单做一个,模拟按下Tab键。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小键盘右移略过锁定列.table

 
--  作者:chnfo
--  发布时间:2012/11/9 17:19:00
--  
解决了部分问题。
出现了新问题。

1.我的表设定是按回车键向下移。

现在,按回车键先移到本行的非锁定列的下一行;按左方向键的先回到左一单元格,再按左又执行了tab操作…………

--  作者:lin_hailun
--  发布时间:2012/11/9 17:42:00
--  
 对事件加一个判断就行了……

If e.KeyCode = Keys.Tab OrElse e.KeyCode = Keys.Right Then

End If
[此贴子已经被作者于2012-11-9 17:44:57编辑过]

--  作者:chnfo
--  发布时间:2012/11/10 20:10:00
--  
我想做的是在小键盘上操作左右方向 键,跳过锁定列。

但是好象出问题了。右移还好,左移的时候,不能成功。

请问问题出在哪里?
Select Case e.KeyCode
    Case Keys.right  ,Keys.Tab
        If e.Table.colSel = e.Table.Cols.Count - 1 Then Return
        If e.Table.Cols(e.Table.colSel+1).AllowEdit = False Then
            Sendkeys.Send("{Tab}")
        End If
    Case Keys.left
        If e.Table.colSel = 0  Then Return
        If e.Table.Cols(e.Table.colSel-1).AllowEdit = False Then
            Sendkeys.Send("+{Tab}")     \'是不是这里写错了?
        End If
End Select

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小键盘左右移略过锁定列.table


--  作者:lin_hailun
--  发布时间:2012/11/10 21:08:00
--  
 最后的代码。

Select Case e.KeyCode
    Case Keys.right, Keys.Tab
        If e.Table.colSel = e.Table.Cols.Count - 1 Then Return
        If e.Table.Cols(e.Table.colSel+1).AllowEdit = False Then
            Sendkeys.Send("{Tab}")
        End If
    Case Keys.left
        If e.Table.colSel = 0  Then Return
        If e.Table.Cols(e.Table.colSel-1).AllowEdit = False Then
            e.Table.Select(e.Table.RowSel, e.Table.colSel-1)
            Sendkeys.Send("{LEFT}")
        End If
End Select

--  作者:chnfo
--  发布时间:2012/11/10 21:16:00
--  
非常感谢 ………………
有一点点偏差,应当是
    Case Keys.left
        If e.Table.colSel = 0  Then Return
        If e.Table.Cols(e.Table.colSel-1).AllowEdit = False Then
            e.Table.Select(e.Table.RowSel, e.Table.colSel-1)
            e.Table.Select(e.Table.RowSel, e.Table.colSel) 
            Sendkeys.Send("{LEFT}")
        End If