delphi form1 上有EDIT1控件响应键盘输入事件,当键盘输入后,扫描枪输入就不行。

delphi form1 上有EDIT1控件响应键盘输入事件,当键盘输入后,扫描枪输入就不行了
部分代码如下
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
InputLen = 14; //扫描枪扫描一维码 13位
var
iFinish: DWORD;
begin
if sInput = '' then
iStart := GetTickCount();
sInput := sInput + Key;
if Length(sInput) >= InputLen then
begin
iFinish := GetTickCount();
if (iFinish - iStart) / Length(sInput) < 200 then
begin
label1.caption := '成功扫码' + sInput;
sInput := '';

end
else
begin

end;
sInput := '';
end;
end;

当我一直扫码,没有问题,label1都显示正常扫码内容
但是我只要手动在Edit1里输入查询数据回车后,再扫描就是不正常的,要么没有,要么乱的。
请问怎么解决?

第1个回答  2017-07-02
下断跟踪一下。

开发了个delphi软件,但是只能键盘输入,不能扫描输入,是什么原因?求高手...
问题说得比较模糊,我罗列几个,你看看你是哪种情况:1,驱动问题,扫描头需要驱动;2,一般的扫描枪是在输入框处“粘贴条码再加回车”,所以,必须确保是否允许粘贴操作;3,当前焦点问题,确保当前的焦点是在输入框内。

delphi 扫描枪EDIT输入完后 自动执行BUTTON
测试:可以打开记事本,扫描多次,除了字符,还会换行。结论:一般扫描枪,输入时都带有换行,所以输入时候捕捉换行(也有可能是回车,我忘记了)然后触发,程序实在忘记怎么写的了 if 条码符合长度 AND 最后字符是换行(回车) then begin BUTTON.Click; 就可以了 end;...

delphi如何限制扫描枪仅当焦点在文本软件框时有效而在按钮上时无效
建议改变操作环境,扫描如果离主机很远,没办法及时看到信息的。或者在程序中记录下未找到的数据,保存到数据库,操作员扫描完成可以查看记录。

delphi7中把edit空间的值读取出来写入数据库。
注意连接好ADOQuery1就可以了

相似回答