以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]选定表中位置的单元格Select方法  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=74371)

--  作者:dogman
--  发布时间:2015/9/9 16:00:00
--  [求助]选定表中位置的单元格Select方法
问题1:
选定表中位置的单元格Select方法,只能用在Table范围中吗?
比如:CurrentTable.Select(CurrentTable.Rowsel, CurrentTable.Cols("客户").Index),选定当前表的当前行的“客户”列单元格
这一句只能放在StartEdit等的编辑事件中,不能放在DataColChanging的数据事件中吗?
放在DataColChanging中的话会选定其他列,真怪。

问题2:
表编辑事件StartEdit的中的代码如下:
If e.Row.IsNull("客户") = True Then
    e.Cancel = True
    MessageBox.Show(" 请先输入""客户""!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    CurrentTable.Select(CurrentTable.Rowsel,CurrentTable.Cols("客户").Index)
End If
其他测试没问题,但是当选定一整行按Del键后,就会不厌其烦的跳出对话框。怎么解决呢?

补充一下:
StartEdit全部代码如下:

Select Case e.Col.Name
    Case "客户", _
        "员工姓名"
        
    Case Else
        If e.Table.Value = Nothing Then
            If e.Row.IsNull("员工姓名") = True Then
                e.Cancel = True
                MessageBox.Show(" 请先输入""员工姓名""!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                CurrentTable.Select(CurrentTable.Rowsel,CurrentTable.Cols("员工姓名").Index)
            End If
            
            If e.Row.IsNull("客户") = True AndAlso e.Row.IsNull("员工姓名") = False Then
                e.Cancel = True
                MessageBox.Show(" 请先输入""客户""!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                CurrentTable.Select(CurrentTable.Rowsel, CurrentTable.Cols("客户").Index)
            End If
        End If
End Select
[此贴子已经被作者于2015/9/9 16:23:17编辑过]

--  作者:大红袍
--  发布时间:2015/9/9 17:25:00
--  

问题1:可以放在DataColChanging事件

 

Tables("表名").Select(Tables("表名").Rowsel, Tables("表名").Cols("客户").Index)

 

问题2:去编写keydown事件,检查如果是del键,就设置一个变量,不弹出对话框。

 

If e.KeCode = Keys.Delete Then

    Vars("不弹出") = true

Else

    Vars("不弹出") = False

End If

 


--  作者:dogman
--  发布时间:2015/9/10 13:55:00
--  
谢谢!
Vars的思路给我开阔了眼界。