如何屏蔽单行编辑框Ctrl + v的功能

A6215911123 2008-11-20 12:30:02
如何屏蔽单行编辑框Ctrl + v的功能?
...全文
162 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jlwei888 2008-11-20
  • 打赏
  • 举报
回复
If KeyDown(KeyControl!) and KeyDown(KeyV!) Then



A6215911123 2008-11-20
  • 打赏
  • 举报
回复
屏蔽单个按键是很好操作的,问题是怎么才知道用户操作了ctrl + v这个动作,以及如何屏蔽这个粘贴的功能

在网上也查了很久的资料,好象要用到钩子,那样对我来说有困难。

pb中有没有更好的办法来实现这个功能?
gaoko 2008-11-20
  • 打赏
  • 举报
回复
可参考
if not KeyDown(KeyEnter!) then Return
jlwei888 2008-11-20
  • 打赏
  • 举报
回复
单行编辑框的key事件中屏蔽
liubocy 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 leio 的回复:]
除了Ctrl+V,还要检测Shift+Insert,这个组合建的功能也是粘贴。
[/Quote]

呵呵 学了一招了
leio 2008-11-20
  • 打赏
  • 举报
回复
可以利用按下Ctrl和V键的时间差来清空剪贴板

新建事件ue_key,ID:pbm_keydown
ue_key代码:

if keyflags=2 then //ctrl键被按下,立刻清空剪贴板
Clipboard('')
end if

if key=keyv! and keyflags=2 then
messagebox('Stop','不允许使用粘贴功能')
return
end if

leio 2008-11-20
  • 打赏
  • 举报
回复
除了Ctrl+V,还要检测Shift+Insert,这个组合建的功能也是粘贴。

liubocy 2008-11-20
  • 打赏
  • 举报
回复
当然你也可以用权限判断当前操作员是否可以手写输入编号了
liubocy 2008-11-20
  • 打赏
  • 举报
回复
有2个办法:
窗口声明实例变量:
Long il_Cpu
Boolean ibo_Flag

单行编辑框右键事件代码:return 1

新建事件ue_key,ID:pbm_keydown

ue_key代码:

IF This.text = '' THEN il_Cpu = 0

IF key <> KeyEnter! THEN
IF KeyDown(KeyControl!) and KeyDown(KeyV!) Then ibo_flag = True
IF il_Cpu = 0 THEN il_Cpu = Cpu()
END IF

IF key = KeyEnter! THEN
IF ibo_flag THEN
MessageBox( '', '不允许使用粘贴功能,请手工输入。' )
This.text = ''
ibo_flag = False
RETURN
END IF

IF Trim( This.text ) = '' THEN
MessageBox( '', '请扫描货品。' )
RETURN
END IF

IF Cpu() - il_Cpu < 150 THEN //1000个单位为1秒,根据实际情况设置,反正是比扫描时间大,比手工输入时间小
cb_1.TriggerEvent( Clicked! ) //根据编码的操作,设置不显示
ELSE
MessageBox( '', '你没有手工输入的权限。' )
This.text = ''
RETURN
END IF
END IF


方法2,使用Clipboard清空剪贴板的内容
ue_key代码:

IF This.text = '' THEN il_Cpu = 0
Clipboard('') //清空剪贴板的内容

IF key <> KeyEnter! THEN
IF il_Cpu = 0 THEN il_Cpu = Cpu()
END IF

IF key = KeyEnter! THEN
IF Trim( This.text ) = '' THEN
MessageBox( '', '请扫描货品。' )
RETURN
END IF

IF Cpu() - il_Cpu < 150 THEN //1000个单位为1秒,根据实际情况设置,反正是比扫描时间大,比手工输入时间小
cb_1.TriggerEvent( Clicked! ) //根据编码的操作,设置不显示
ELSE
MessageBox( '', '你没有手工输入的权限。' )
This.text = ''
RETURN
END IF
END IF

youngyey 2008-11-20
  • 打赏
  • 举报
回复
既然可以捕捉到ctrl+V的按键就好办了啊,
你弄两个输入框,放在一起,一个是接受输入的,接收的可靠,再写到另外一个实际用的上,如果数据录入非法,不写过去,
显示上控制一下,应该可以的
sinlan 2008-11-20
  • 打赏
  • 举报
回复
为什么不用readonly?
A6215911123 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jlwei888 的回复:]
里面加个return试试
[/Quote]
系统先执行粘贴的操作,才再去执行return
jlwei888 2008-11-20
  • 打赏
  • 举报
回复
里面加个return试试
A6215911123 2008-11-20
  • 打赏
  • 举报
回复
明天+100
A6215911123 2008-11-20
  • 打赏
  • 举报
回复
我想实现的功能是这样的,扫描枪扫描编号,不允许手工输入编号,扫描枪和键盘一样的接口。

我试着根据按键的时间差来判断是否手工输入,但如果使用了ctrl + v,并且操作速度非常快的话,可以跳过时间差的判断。

如果有什么方法能让单行编辑框不相应ctrl + v的这个功能,就好了。

加分求助!
A6215911123 2008-11-20
  • 打赏
  • 举报
回复
如何屏蔽这个粘贴的功能?

If KeyDown(KeyControl!) and KeyDown(KeyV!) Then
messagebox('提示','ctrl + v')
end if

是先粘贴,再提示的
金大哈 2008-11-20
  • 打赏
  • 举报
回复
看键盘按ctrl+v 是什么在窗口的key里屏蔽这个就可以了 好像other事件里也可以

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧