社区
Delphi
帖子详情
怎麼在EDIT控件中實現不能用鍵盤輸入,只能用掃碼槍掃入?
X_0
2010-03-24 11:50:45
請問:怎麼在EDIT控件中實現不能用鍵盤輸入,只能用掃碼槍掃入條碼?謝謝!
...全文
650
23
打赏
收藏
怎麼在EDIT控件中實現不能用鍵盤輸入,只能用掃碼槍掃入?
請問:怎麼在EDIT控件中實現不能用鍵盤輸入,只能用掃碼槍掃入條碼?謝謝!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ChipHead
2010-03-25
打赏
举报
回复
[Quote=引用 21 楼 sz_haitao 的回复:]
一定要区分 按键来源 是 键盘还是扫描枪
可以在按键的 间隔 和 长度(字符数、最后是回车) 里做判断
只接受 2个连续字符间停顿时间小于xx毫秒的,这样得到的字符串长度为y,且最后一个字符是回车的,才真正接受
[/Quote]
如果一定要区分键盘和扫描枪,恐怕也只有这个方法了。
X_0
2010-03-24
打赏
举报
回复
能簡單給我寫兩句嗎?萬分感謝
haitao
2010-03-24
打赏
举报
回复
不用做任何事情
扫描枪的驱动会把扫得的条码作为按键输入到edit的
bdmh
2010-03-24
打赏
举报
回复
[Quote=引用 2 楼 x_0 的回复:]
設為只讀,掃碼也進不去了
[/Quote]
胡说,设为只读可以禁止键盘输入,扫描枪扫描后,会触发对应的事件,你可以通过代码给edit赋值
X_0
2010-03-24
打赏
举报
回复
設為只讀,掃碼也進不去了
yct0605
2010-03-24
打赏
举报
回复
edit设置为只读......
X_0
2010-03-24
打赏
举报
回复
掃碼槍是跟鍵盤插在一起的,用個1轉2的連在一起,而且不插鍵盤,掃碼槍也不能用,這是不是沒辦法屏蔽鍵盤啊?
haitao
2010-03-24
打赏
举报
回复
一定要区分 按键来源 是 键盘还是扫描枪
可以在按键的 间隔 和 长度(字符数、最后是回车) 里做判断
只接受 2个连续字符间停顿时间小于xx毫秒的,这样得到的字符串长度为y,且最后一个字符是回车的,才真正接受
Harryfin
2010-03-24
打赏
举报
回复
我一直认为最好把这个技术问题转化为管理的问题
天火
2010-03-24
打赏
举报
回复
可不可以这样呢,如果是键盘输入,肯定会让那个EDIT控件得到焦点,但扫描枪不一定,可以设成,当这个控件得到焦点时不让输入。如果说扫描枪也会先得焦点的话,那就用两个EDIT控件,一个得值,一个传值 。得值的那个控件如果不想让输入,又不能隐藏和只读,可以把它拉到窗体外面去。
scfanxzq
2010-03-24
打赏
举报
回复
[Quote=引用 14 楼 harryfin 的回复:]
扫描枪是模拟键盘输入的,触发后会返回一串字符串和一个回车符
[/Quote]
我倒是想到那么一个方法,在keypress里面不直接修改edit的值,而是用一个全局的字符串来记录,只有当读到一个#13的字符的时候,就把那个全局的字符串放到edit里面,并且清空字符串。但是有一个问题就是,如果在使用扫描枪之前点了两下键盘,再扫描,这个时候点的键盘的信息也会被记录下来。这个怎么解决呢?
scfanxzq
2010-03-24
打赏
举报
回复
[Quote=引用 15 楼 yct0605 的回复:]
换成label就完事了,不用那么复杂了。
[/Quote]
我晕啊,问题是你要实现扫描枪输入的话,最简单的办法就是响应keypress事件,就算用label,你在keypress事件里面不照样会修改label的caption吗?那点键盘不照样会修改label的caption吗?
haochin
2010-03-24
打赏
举报
回复
键盘和扫描枪是同一种输入设备吧。
yct0605
2010-03-24
打赏
举报
回复
换成label就完事了,不用那么复杂了。
Harryfin
2010-03-24
打赏
举报
回复
扫描枪是模拟键盘输入的,触发后会返回一串字符串和一个回车符
scfanxzq
2010-03-24
打赏
举报
回复
[Quote=引用 10 楼 ok1411 的回复:]
自己试试不就知道了
[/Quote]
没接触过扫描枪,两年前一次工作机会,接触到一个磁卡的读卡器,就像超市刷银行卡的那个东东,和扫描枪的原理一样,也是响应keypress事件,但是那个和键盘是同样的原理,所以肯定枪能触发,键盘就肯定能触发
ChipHead
2010-03-24
打赏
举报
回复
[Quote=引用 9 楼 scfanxzq 的回复:]
好像不是那么简单吧,首先扫描枪扫描后应该是触发keypress事件吧?如果你响应这个事件,那你按键盘的时候不也同样的会响应这个事件吗?
[/Quote]
可是系统就是把扫描枪当作键盘一样看待的。如果一定说键盘不能用来录入,可能只能:
1. 去直接访问驱动程序的输入;
2. 据说有个底层钩子可以在键盘事件产生之前获得输入,也许用这个钩子可以达到目的:http://topic.csdn.net/u/20100313/19/23e1bae3-361f-463f-9fba-925b108f075c.html
flew0214
2010-03-24
打赏
举报
回复
直接拔掉键盘吧。。
ok1411
2010-03-24
打赏
举报
回复
自己试试不就知道了
scfanxzq
2010-03-24
打赏
举报
回复
[Quote=引用 7 楼 bdmh 的回复:]
引用 5 楼 x_0 的回复:
能簡單給我寫兩句嗎?萬分感謝
这有什么好给的,扫描枪接口会直接返回条码值,你只需要Edit.Text := xxxxx就行了
[/Quote]
好像不是那么简单吧,首先扫描枪扫描后应该是触发keypress事件吧?如果你响应这个事件,那你按键盘的时候不也同样的会响应这个事件吗?
加载更多回复(3)
qt 扫码枪扫描 输入事件 包含可输入字符
与大多数键盘输入相同,上档即shift键会对键盘输入的内容产生影响,在qt的事件中也是如此,比如直接按键盘上的q就是q所对应的字符编码,如果信息是Q那么在qt的事件则是先给一个16,之后再是q所对应的字符编码,所以才有了以上的处理。当需要对扫码枪扫描出的信息进行处理或打印等,有多个办法,其中串口,中间件等不在本文章讨论内。
只许扫码枪输入,不允许手动输入,判断条件:输入频率
只许扫码枪输入,不允许手动输入,判断条件:输入频率 //定义一个成员函数用于保存每次的时间点 private DateTime _dt = DateTime.Now; //最大时间间隔 private int interval_time = 500; private void txtBarCode_KeyUp(object sender, KeyEventArgs e) {...
flutter:扫码枪获取数据源(方案多平台适用)
通过 mixin 重载 flutterWidgetBinding , 实现 flutter 通用扫码枪方案。处理扫码唤起键盘、扫码唤起联想输入、存在焦点但扫码无反应等问题。
我实现了C#自建程序向其他程序数据输入
最近接到一个需求,向一个程序(简称A程序)指定的文本框输入数据。其实是一个扫码输入场景,之前是通过手持扫码枪通过USB连接电脑,然后光标放入A程序文本框以后,手动扫码就可以输入了。这个需求是通过自动扫码设备,读取条码数据自动输入到A程序的文本框。考虑到有几种解决方案,有自动化脚本,实现自动点击自动输入,其实作为我这个场景,更多的需求是用户体验,无感对接。这样的方案,主要是通过Windows API函数,获取A程序窗口句柄,然后获取文本框的具体地址,进行输入实现。打开精益编程助手,找到要输入的窗口。
Android 获取USB扫描枪简易封装
最近做了个关于Android设备Usb外接扫码器的项目,在此记录下。扫码器有以下这两种模式: USB HID-KBW:扫码器会将扫描出来的内容转化为键盘事件,就是Android中就是KeyEvent里面对应的常量(0 = KeyEvent.KEYCODE_0)。 USB 虚拟串口:可使用android-serialport-api 连接到UsbDevice进行通信,读取数据。(设备要支...
Delphi
5,927
社区成员
262,932
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章