Использование сканера штрих-кода с Delphi

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

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

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

4 ответа

Решение

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

В TForm есть свойство KeyPreview. Установите значение true, чтобы все нажатия клавиш обрабатывались формой перед элементами управления.

Статья об обработке клавиатуры в Delphi: http://delphi.about.com/od/objectpascalide/a/keyboard_events.htm

Соответствующий вопрос SO: Как работает KeyPreview в Delphi?

Что я сделал, так это использовал KeyPreview для отслеживания функциональной клавиши, такой как F9, для которой сканер штрих-кода настроен на префиксное сканирование. Когда это получено, я выскакиваю диалог с единственным окном редактирования и кнопкой ОК. Затем он получает оставшуюся информацию о штрих-коде, и сканер заканчивает ввод клавишей Enter. Затем я могу определить назначение отсканированных данных (в моем случае один тип начинается с префикса) и затем поместить данные в соответствующее поле в моей основной форме.

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

Вы также можете разместить TEdit за пределами видимого окна, установив свойства Top и Left компонента на что-то вроде -50. Затем вы можете установить фокус на него, как в обычном видимом окне TEdit, но он будет невидим для пользователя.

Другие вопросы по тегам