我正在开发一个将使用条形码扫描仪的应用程序。现在我遇到的问题是,当我扫描条形码时,它只显示TEdit中我的条形码的第一个数字。
当我通过扫描测试条形码本身时说到MS Word或记事本,它会扫描整个条形码并显示正确的整数序列。
当我使用我的delphi应用程序扫描时,是否需要编写任何代码以使扫描程序从条形码中读取多于1个数字?
我扫描到TEdit框并使用OnChange事件来获取扫描值。
procedure TfrmMain.edtWeightChange(Sender: TObject);
begin
ActiveWeight := StrToFloat(edtWeight.text);
end;
我正在使用Delphi XE6。
编辑:我正在使用USB条形码扫描仪,并认为它的工作原理就像键盘一样。因此我没有写任何其他代码。我的假设是因为它的工作方式就像一个keybaord,我只需要将焦点放入TEdit然后扫描条形码。 Onchange事件是TEdit可以检测条形码扫描器何时扫描。然后我将该字符串值存储为数字变量ActiveWeight答案 0 :(得分:8)
请勿使用OnChange
事件,因为它可能会多次触发,请改为使用OnKeyPress
事件:
procedure TfrmMain.edtWeightKeyPress(Sender: TObject var Key: Char);
begin
if Key=#13 then
ActiveWeight := StrToFloat(edtWeight.text);
end;
此代码假定扫描仪在扫描条形码后发送回车(通常是这种情况)。
需要注意的一点是,您需要使用TryStrToFloat来防止错误的用户输入(即用户在没有值的情况下按TEdit
输入)