Сканер штрих-кода отображает только первую цифру штрих-кода

Я разрабатываю приложение, которое будет использовать сканер штрих-кода. Теперь проблема, с которой я столкнулся, заключается в том, что когда я сканирую штрих-коды, он отображает только первый номер моего штрих-кода в TEdit.

Когда я проверяю сам штрих-код, сканируя его, скажем, в MS Word или Блокнот, он сканирует весь штрих-код и правильно отображает всю числовую последовательность.

Итак, есть ли какой-нибудь код, который мне нужно написать, чтобы сканер считывал более 1 числа из моего штрих-кода, когда он сканируется с помощью моего приложения delphi?

Я просматриваю поле TEdit и использую событие OnChange, чтобы получить значение сканирования.

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

Я использую Delphi XE6.

РЕДАКТИРОВАТЬ: Я использую USB-сканер штрих-кода и предполагаю, что он работает так же, как клавиатура. Поэтому другого кода я не писал. Я исходил из того, что, поскольку он работает так же, как клавиатура, мне нужно будет только сосредоточить внимание на TEdit, а затем отсканировать штрих-код. Событие Onchange было сделано для того, чтобы TEdit мог определить, когда сканер штрих-кода сканировал. Затем я бы сохранил это строковое значение как числовую переменную ActiveWeight.


person Japster    schedule 16.01.2015    source источник


Ответы (1)


Не используйте OnChangeevent, потому что его можно запускать несколько раз, используйте вместо этого OnKeyPress:

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

этот код предполагает, что сканер отправляет возврат каретки после сканирования штрих-кода (что обычно имеет место).

Следует отметить, что вам необходимо использовать TryStrToFloat для предотвращения ошибочного ввода пользователем (т. Е. пользователь нажимает ввод в TEdit без значения)

person whosrdaddy    schedule 16.01.2015