如何限制对记录或列选中的复制
时 间:2007-06-13 00:00:00
作 者:UMVsoft整理 ID:8 城市:上海 QQ:2851379730
摘 要:有如何限制对记录或列选中的复制?
思路是建立一个Autokeys宏来实现对Ctrl+C的截获,但这里还需要一个判断,判断当前选中的是字符型还是记录或列数据,此功能需要全程序通用,无论是针对某一个窗体、主窗体或子窗体。
正 文:
一、如下
问题:
如何限制对记录或列选中的复制?
在Windows的环境中,可用 Ctrl+C 执行复制,Ctrl+V 执行粘帖。而且,即便窗体中没有记录选择器,在ACCESS中也可以用 Ctrl+A 执行(多)记录选中。
由于程序功能的需要,在需要限制用户的一部分复制功能,只对字符型的选中可执行复制,对记录集型或列选中都不允许。
思路是建立一个Autokeys宏来实现对Ctrl+C的截获,但这里还需要一个判断,判断当前选中的是字符型还是记录或列数据,此功能需要全程序通用,无论是针对某一个窗体、主窗体或子窗体。
回答:
首先,要完全阻止用户导出数据几乎是不可能的,因为即使封杀了 ACCESS 所有的方面,只要用户能看到数据,就必定能用 OCR 软件截图并进行识别,最终还是能批量导出数据的。
其次,要限制复制粘贴,除了限制快捷键还要限制系统菜单、工具栏、快捷菜单中的复制、粘贴操作。这些方面本站都有详细的文章进行介绍,各位网友可以使用 http://access911.net 的文章搜索功能进行搜索,这里就不一一列举了。
思考方向分两个方面
一、在 CTRL+C 时判断当前操作,判断被操作的是对象?是数据表视图?是行列?或是文本控件?然后区别对待。
二、在已经复制到剪贴版以后用 WIN API 去判断整个剪贴板中的数据,然后再做取舍。当然,这方面操作可以用 VB 或者 VC 来创建 ActiveX 类库,然后在 ACCESS 中引用后使用,这样更加方便。
这里主要介绍第一种思路。
判断当前控件是否文本控件,用 Screen.ActiveControl 来判断,判断当前是否选取整条记录,如果是文本框,而且没有选中整条记录则激活 CTRL+C ,否则用自己的代码代替系统的 CTRL+C。如何用自己的操作来代替 Ctrl+C 本站有相关的文章可以参考
如何禁用ctrl+c?如何定义一个我自己的快捷键?
http://access911.net/?kbid;77FAB41E
具体操作代码如下:
'===========================================================
' 过程及函数名: DoCopy
' 版本号 : 1.0
' 说明 : 本函数作用:根据CanCopy的返回值,如果允
' 许 COPY 就执行 COPY代码
' 引用 : --
' 输入参数 : --
' 输出值 : --
' 返回值 : true 允许COPY
' false 不允许 COPY
' 调用演示 : DoCopy()
' 最后修改日期: 2007-6-4 19:09:00
' 示例地址 : http://access911.net/?kbid;72FABE1E14DCEBF3
' 作者 : cg1
' 网站 : http://access911.net
' 电子邮件 : access911@gmail.com
' 版权 : 作者保留一切权力,
' 请在公布本代码时将本段说明一起公布,谢谢!
'===========================================================
Public Function DoCopy()
On Error GoTo DoCopy_Err
If CanCopy = True Then
DoCmd.RunCommand acCmdCopy
Else
MsgBox "不允许 COPY 该数据"
End If
Exit Function
DoCopy_Err:
Debug.Print Err.Number, Err.Description
End Function
'===========================================================
' 过程及函数名: CanCopy
' 版本号 : 1.0
' 说明 : 本函数作用:判断是否允许COPY
' 以下情况不允许COPY:
' 当前对象是数据表视图且选定了多行或者多列、
' 当前控件不是文本框、
' &
Access软件网QQ交流群 (群号:54525238)
Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 32位的Access软件转化为64...(04.12)
- 【Access高效办公】如何让vb...(04.11)
- 仓库管理实战课程(10)-入库功能...(04.08)
- Access快速开发平台--Fun...(04.07)
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)