我正在开发一个应用程序,它将使用条形码扫描仪。现在我遇到的问题是,当我扫描条形码时,它只会在TEdit中显示我的条形码的第一个号码。
当我测试条形码本身,通过扫描它,对MS,Word或记事本说,它扫描整个条形码,并显示完整的数字序列正确。
那么,当我的delphi应用程序扫描的时候,我需要写什么代码来让扫描仪从我的条形码中读取超过一个数字呢?
我扫描到一个TEdit框,并使用OnChange事件获取扫描值。
procedure TfrmMain.edtWeightChange(Sender: TObject);
begin
ActiveWeight := StrToFloat(edtWeight.text);
end;我用的是德尔菲XE6。
编辑:我使用的是USB条形码扫描仪,并假设它的工作原理就像键盘一样。因此,我没有编写任何其他代码。我的假设是,因为它就像键盘一样工作,所以我只需要将焦点放在TEdit中,然后扫描条形码。Onchange事件使TEdit能够在条形码扫描器扫描时检测到。然后将该字符串值存储为数字变量ActiveWeight。
发布于 2015-01-16 14:49:51
不要使用OnChange事件,因为它可以被多次触发,而是使用OnKeyPress事件:
procedure TfrmMain.edtWeightKeyPress(Sender: TObject var Key: Char);
begin
if Key=#13 then
ActiveWeight := StrToFloat(edtWeight.text);
end;此代码假设扫描器在扫描条形码(通常是这种情况)后发送一个回车返回。
需要注意的一点是,您需要使用TryStrToFloat来防止错误的用户输入(即用户按下TEdit中没有值的enter )。
https://stackoverflow.com/questions/27986261
复制相似问题