2015-01-16 2 views
1

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

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

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

Сканирование в поле TEdit и использование события OnChange для захвата значения сканирования.

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

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

EDIT: Я использую USB-сканер штрих-кода и предполагаю, что он работает так же, как клавиатура будет работать. Поэтому я не написал никакого другого кода. Я был в предположении, что, поскольку он работает так же, как keybaord, мне нужно будет только сосредоточить внимание на TEdit, а затем сканировать штрих-код. Событие Onchange было таким, что TEdit может обнаружить сканирование сканера штрих-кода. Тогда я бы сохранить это значение строки как переменное число ActiveWeight

ответ

8

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

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

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

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

Смежные вопросы