怎麼在EDIT控件中實現不能用鍵盤輸入,只能用掃碼槍掃入? 請問:怎麼在EDIT控件中實現不能用鍵盤輸入,只能用掃碼槍掃入條碼?謝謝! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 胡说,设为只读可以禁止键盘输入,扫描枪扫描后,会触发对应的事件,你可以通过代码给edit赋值 不用做任何事情扫描枪的驱动会把扫得的条码作为按键输入到edit的 edit.readonly:=true;edit.text:='啊打发敖德萨发大水发大水'; 这有什么好给的,扫描枪接口会直接返回条码值,你只需要Edit.Text := xxxxx就行了 如果这样,你还提供个Edit干嘛,干脆用个Label,然后在Form.OnKeyPress中中代码回显扫描进来的输入即可。 好像不是那么简单吧,首先扫描枪扫描后应该是触发keypress事件吧?如果你响应这个事件,那你按键盘的时候不也同样的会响应这个事件吗? 可是系统就是把扫描枪当作键盘一样看待的。如果一定说键盘不能用来录入,可能只能:1. 去直接访问驱动程序的输入;2. 据说有个底层钩子可以在键盘事件产生之前获得输入,也许用这个钩子可以达到目的:http://topic.csdn.net/u/20100313/19/23e1bae3-361f-463f-9fba-925b108f075c.html 没接触过扫描枪,两年前一次工作机会,接触到一个磁卡的读卡器,就像超市刷银行卡的那个东东,和扫描枪的原理一样,也是响应keypress事件,但是那个和键盘是同样的原理,所以肯定枪能触发,键盘就肯定能触发 换成label就完事了,不用那么复杂了。 我晕啊,问题是你要实现扫描枪输入的话,最简单的办法就是响应keypress事件,就算用label,你在keypress事件里面不照样会修改label的caption吗?那点键盘不照样会修改label的caption吗? 我倒是想到那么一个方法,在keypress里面不直接修改edit的值,而是用一个全局的字符串来记录,只有当读到一个#13的字符的时候,就把那个全局的字符串放到edit里面,并且清空字符串。但是有一个问题就是,如果在使用扫描枪之前点了两下键盘,再扫描,这个时候点的键盘的信息也会被记录下来。这个怎么解决呢? 可不可以这样呢,如果是键盘输入,肯定会让那个EDIT控件得到焦点,但扫描枪不一定,可以设成,当这个控件得到焦点时不让输入。如果说扫描枪也会先得焦点的话,那就用两个EDIT控件,一个得值,一个传值 。得值的那个控件如果不想让输入,又不能隐藏和只读,可以把它拉到窗体外面去。 一定要区分 按键来源 是 键盘还是扫描枪可以在按键的 间隔 和 长度(字符数、最后是回车) 里做判断只接受 2个连续字符间停顿时间小于xx毫秒的,这样得到的字符串长度为y,且最后一个字符是回车的,才真正接受 delphi 有没有读取文本内容为源代码的函数 问一个比较少见的 关于上下标存储的问题 使用Delphi编写的程序性能上怎么样? fsScript的用法? 学习、交流ERP/MRP经验群 (16301324) 如何在dbgrid中显示用原生ADO的Recordset查的记录集???? 请问下面这段代码错在哪里? 怎样用DELPHI制作XP那样的界面!!! 如何让数据库连接更平滑? 请教:如何将stringgrid中的数据。。。。 请教下 TdxDBtreelist 如何获取多选 谁用过provider+clientdataset,问个参数传递问题
扫描枪的驱动会把扫得的条码作为按键输入到edit的
edit.text:='啊打发敖德萨发大水发大水';
如果这样,你还提供个Edit干嘛,干脆用个Label,然后在Form.OnKeyPress中中代码回显扫描进来的输入即可。
可是系统就是把扫描枪当作键盘一样看待的。如果一定说键盘不能用来录入,可能只能:
1. 去直接访问驱动程序的输入;
2. 据说有个底层钩子可以在键盘事件产生之前获得输入,也许用这个钩子可以达到目的:http://topic.csdn.net/u/20100313/19/23e1bae3-361f-463f-9fba-925b108f075c.html
没接触过扫描枪,两年前一次工作机会,接触到一个磁卡的读卡器,就像超市刷银行卡的那个东东,和扫描枪的原理一样,也是响应keypress事件,但是那个和键盘是同样的原理,所以肯定枪能触发,键盘就肯定能触发
只接受 2个连续字符间停顿时间小于xx毫秒的,这样得到的字符串长度为y,且最后一个字符是回车的,才真正接受