Foxtable(狐表)用户栏目专家坐堂 → 如何让粘贴操作无效


  共有7743人关注过本帖树形打印复制链接

主题:如何让粘贴操作无效

帅哥哟,离线,有人找我吗?
明丰
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
如何让粘贴操作无效  发帖心情 Post By:2012/11/17 13:51:00 [只看该作者]

某一列只能输入列表项目内容,但如果原来剪贴板有内容,此时对该列进行粘贴操作,同样能写入其它内容。

 

AllowClipBoard主要是限制复制数据,如果增加一个限制粘贴的函数就好了。


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/17 14:00:00 [只看该作者]

 设置这一列为禁止直接输入行不?

 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2012/11/17 14:15:00 [只看该作者]

禁止直接输入就不能选择列表项目了。

 

有2种选择:

 

方案1:进入该列时用“Clear”清除剪贴板内容;

方案2:进入该列时把剪贴板内容复制到其它地方,离开该列时再把内容计入剪贴板。

 

但都觉得不理想,最好是进入该列时不能粘贴数据,保留原来剪贴板内容不变。


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/17 14:18:00 [只看该作者]

 列属性,列表项目有一个禁止直接输入的属性。

 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2012/11/17 14:46:00 [只看该作者]

这个问题能解决吗?

 


图片点击可在新窗口打开查看此主题相关图片如下:10.gif
图片点击可在新窗口打开查看


 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目7.table


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/17 15:59:00 [只看该作者]

 没有好的方法,你用第二个方案吧。

把ClipBoard的内容,存起来,楼主先自己弄一下。




 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/17 16:01:00 [只看该作者]

为什么不换个思路?

在Datacolchanging事件中判断输入的值,是否包括在列表项目中,如果不是的,则取消输入?


 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2012/11/17 16:24:00 [只看该作者]

谢谢。

'DataColChanging '禁止列表以外内容输入
If e.DataCol.Name = "列名"  Then '
    Dim s As String '
    For Each dc As DataCol In DataTables("表A").DataCols
        s = s & "|" & dc.name
    Next
    s = s.trim("|")
    Dim r As new List(of String)
    r.AddRange(s.split("|"))
    Dim lst2 As new List(of String)
    Dim val1 As String  = e.DataTable.GetComboListString("列名","[_Identify] <> " & e.DataRow("_Identify"))
    val1 = val1.Replace("|",",")
    lst2.AddRange(val1.split(","))
    For Each v As String In lst2
        If r.Contains(v) Then
            r.Remove(v)
        End If
    Next
    If r.Contains(e.NewValue) = False And e.NewValue IsNot Nothing Then
        e.Cancel = True
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/17 16:31:00 [只看该作者]

呵呵, 你这个判断的代码也太繁琐了,其实可以很简单的。


 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2012/11/17 19:51:00 [只看该作者]

'DataColChanging '禁止动态列表以外内容输入
If e.DataCol.Name = "列名"  Then '
    Dim jh As new List(of String)
    jh.AddRange((CurrentTable.Cols("列名").Combolist).split("|"))
    If jh.contains(e.NewValue) = False And e.NewValue IsNot Nothing Then
        e.Cancel = True
    End If
End If

 

还能更简单吗?

[此贴子已经被作者于2012-11-17 20:04:55编辑过]

 回到顶部
总数 12 1 2 下一页