以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]新增行自动增加R-,光标定位到-后,并且之前的R-无法删除。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=73809)

--  作者:huhu
--  发布时间:2015/8/27 10:23:00
--  [求助]新增行自动增加R-,光标定位到-后,并且之前的R-无法删除。

datacolchanging代码:

比如用户名是jiangxiaogang@bdcom.com.cn   新增行在模块名称列输入hal,自动改为了R-hal。

现在想改为新增行后自动输入了R-,且R-不能删除,光标自动定位到R-后,然后输入hal。

If e.DataCol.Name = "模块名称" Then
    If e.NewValue IsNot Nothing Then
        Select Case user.Name
            Case "jiangxiaogang@bdcom.com.cn","fengsongbai@bdcom.com.cn","fanghao@bdcom.com.cn","liushuangyu@bdcom.com.cn","zhouyinghuan@bdcom.com.cn"
                e.NewValue = "R-" & e.NewValue
            Case "sunxi@bdcom.com.cn","liyishui@bdcom.com.cn","xiejian@bdcom.com.cn","dengkai@bdcom.com.cn","liuqiang@bdcom.com.cn"
                e.NewValue = "S-" & e.NewValue
            Case "wangzhimin@bdcom.com.cn"
                e.NewValue = "OLT-" & e.NewValue
            Case "wangjingfu@bdcom.com.cn"
                e.NewValue = "ONU-" & e.NewValue
        End Select
    End If
End If


--  作者:大红袍
--  发布时间:2015/8/27 10:34:00
--  

 

If e.DataCol.Name = "模块名称" Then
    If e.NewValue IsNot Nothing Then
        Select Case user.Name
            Case "jiangxiaogang@bdcom.com.cn","fengsongbai@bdcom.com.cn","fanghao@bdcom.com.cn","liushuangyu@bdcom.com.cn","zhouyinghuan@bdcom.com.cn"
                If e.newvalue Like "R-*"= False Then
                    e.NewValue = "R-" & e.NewValue
                End If
            Case "sunxi@bdcom.com.cn","liyishui@bdcom.com.cn","xiejian@bdcom.com.cn","dengkai@bdcom.com.cn","liuqiang@bdcom.com.cn"
                e.NewValue = "S-" & e.NewValue
            Case "wangzhimin@bdcom.com.cn"
                e.NewValue = "OLT-" & e.NewValue
            Case "wangjingfu@bdcom.com.cn"
                e.NewValue = "ONU-" & e.NewValue
        End Select
    End If
End If


--  作者:huhu
--  发布时间:2015/8/27 11:01:00
--  
以下是引用大红袍在2015/8/27 10:34:00的发言:

 

If e.DataCol.Name = "模块名称" Then
    If e.NewValue IsNot Nothing Then
        Select Case user.Name
            Case "jiangxiaogang@bdcom.com.cn","fengsongbai@bdcom.com.cn","fanghao@bdcom.com.cn","liushuangyu@bdcom.com.cn","zhouyinghuan@bdcom.com.cn"
                If e.newvalue Like "R-*"= False Then
                    e.NewValue = "R-" & e.NewValue
                End If
            Case "sunxi@bdcom.com.cn","liyishui@bdcom.com.cn","xiejian@bdcom.com.cn","dengkai@bdcom.com.cn","liuqiang@bdcom.com.cn"
                e.NewValue = "S-" & e.NewValue
            Case "wangzhimin@bdcom.com.cn"
                e.NewValue = "OLT-" & e.NewValue
            Case "wangjingfu@bdcom.com.cn"
                e.NewValue = "ONU-" & e.NewValue
        End Select
    End If
End If

这样并没有实现不能删除R-,和光标自动定位到R-后。关键如何让光标自动定位到R-后。能不能删除R-先不管它了。


--  作者:大红袍
--  发布时间:2015/8/27 11:11:00
--  
以下是引用huhu在2015/8/27 11:01:00的发言:

这样并没有实现不能删除R-,和光标自动定位到R-后。关键如何让光标自动定位到R-后。能不能删除R-先不管它了。

 

那你在startEdit的时候,写代码

 

systemready = false

If e.Col.Name = "模块名称" 

    If e.Row(e.Col.Name) like "R-*" Then
        e.Row(e.Col.Name) = e.Row(e.Col.Name).SubString(2)

    End If

End If
systemready = true


--  作者:huhu
--  发布时间:2015/8/27 12:04:00
--  
以下是引用大红袍在2015/8/27 11:11:00的发言:

 

那你在startEdit的时候,写代码

 

systemready = false

If e.Col.Name = "模块名称" 

    If e.Row(e.Col.Name) like "R-*" Then
        e.Row(e.Col.Name) = e.Row(e.Col.Name).SubString(2)

    End If

End If
systemready = true

新增行后,光标没有定位到R-吧,而且鼠标点击这个单元格后,内如自动为空了。


--  作者:Hyphen
--  发布时间:2015/8/27 13:39:00
--  

可以在列属性中使用输入掩码实现,如在模块名称列使用掩码“R-CCCC”

 

掩码使用见http://www.foxtable.com/help/topics/0047.htm

 

不过就有使用限制:目前没有适配任意多个字符的通配符,所以掩码使用多少个C就要看你模块名称列的字符长度了


--  作者:大红袍
--  发布时间:2015/8/27 14:22:00
--  
以下是引用huhu在2015/8/27 12:04:00的发言:

新增行后,光标没有定位到R-吧,而且鼠标点击这个单元格后,内如自动为空了。

 

做不到你想做的,上面的方法已经是最好的了。


--  作者:lsy
--  发布时间:2015/8/27 14:32:00
--  
DataRowAdded

e.DataRow("第一列") = "R-"
Sendkeys.Send(" ")

DataColChanged

If e.DataCol.Name = "第一列" AndAlso e.DataRow(e.DataCol).StartsWith("R-") = False Then
    e.DataRow(e.DataCol) = "R-" & e.DataRow(e.DataCol)
End If