【问题标题】:Barcode Scanner only displaying first digit of barcode条码扫描仪只显示条码的第一个数字
【发布时间】:2023-03-08 11:06:01
【问题描述】:

我正在开发一个将使用条形码扫描仪的应用程序。现在我遇到的问题是,当我扫描条形码时,它只在 TEdit 中显示我的条形码的第一个数字。

当我通过对 MS Word 或记事本进行扫描来测试条形码本身时,它会扫描整个条形码并正确显示整个数字序列。

那么当使用我的 delphi 应用程序扫描条形码时,我需要编写任何代码以使扫描仪从我的条形码中读取超过 1 个数字吗?

我扫描到 TEdit 框并使用 OnChange 事件获取扫描值。

  procedure TfrmMain.edtWeightChange(Sender: TObject);
  begin
    ActiveWeight := StrToFloat(edtWeight.text);
  end;

我正在使用 Delphi XE6。

编辑:我正在使用 USB 条码扫描仪,并假设它的工作方式与键盘一样。因此我没有编写任何其他代码。我的假设是因为它就像键盘一样工作,所以我只需要将焦点放在 TEdit 上,然后扫描条形码。 Onchange 事件是为了让 TEdit 可以检测条形码扫描仪何时扫描。然后我将该字符串值存储为数字变量 ActiveWeight

【问题讨论】:

    标签: delphi barcode-scanner


    【解决方案1】:

    不要使用OnChangeevent,因为它可以被多次触发,改用OnKeyPress event:

    procedure TfrmMain.edtWeightKeyPress(Sender: TObject var Key: Char);
    begin
     if Key=#13 then
      ActiveWeight := StrToFloat(edtWeight.text);
    end;
    

    此代码假定扫描器在扫描条形码后发送回车(通常是这种情况)。

    需要注意的一点是,你需要使用TryStrToFloat来防止错误的用户输入(即用户在TEdit没有值的情况下按回车)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      • 2020-11-07
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多