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