Използване на скенер за баркод с Delphi

Разработвам POS (проект за домашни любимци) и мисля да добавя скенер за баркод, за да улавям продажбите по-бързо. В момента нямам скенер при себе си и бих искал да задам няколко въпроса, тъй като съм малко задръстен.

На екрана за продажби първоначалната ми идея беше да имам компонент TEdit и когато човек сканира продукта, той ще запълни TEdit с низа. Сега проблемът, с който се сблъсквам, е, че искам да направя TEdit невидимо, така че човекът да не го вижда. Но след като направите TEdit невидим, не можете да зададете фокус върху него, така че този план не може да работи.

И така, може ли някой да предложи какво мога да използвам, за да "уловя" сканирания низ? Как да накарам компонента да слуша и да чака скенера? Предполагам, че скенерът ще бъде като нормално събитие на клавиатурата, като бутон надолу или нагоре.


person Japster    schedule 26.02.2013    source източник
comment
Скенерите за баркод обикновено изглежда изпращат натискания на клавиши, така че можете да работите с тях по същия начин, по който работите с клавиатурата. Ако не искате да имате видимо Редактиране, можете да управлявате натисканията на клавиши на ниво формуляр със събитията OnKey Up/Down/Press.   -  person jachguate    schedule 27.02.2013
comment
Разбирам, но какво ще използвам, за да уловя низа на баркода, щом има събитие OnKey. С TEdit е лесно, тъй като мога просто да оставя низа да се появи в TEdit и да го взема оттам.   -  person Japster    schedule 27.02.2013
comment
Оказва се, че въпросът има малко общо със скенера за баркод, а повече с това как да получавате текст без фокусиран контрол. Това вярно ли е?   -  person Kromster    schedule 28.02.2013
comment
@Krom Да, това би бил много по-добър въпрос.   -  person Japster    schedule 28.02.2013
comment
Има някои скенери за баркод, които могат да заобиколят клина на клавиатурата и можете да свържете вашата програма директно към устройството за скенер за баркод, което се показва като сериен порт към вашата програма. Намирам това за по-добро от HID/клавиатура за НЯКОИ приложения. Просто пускам информацията за вас.   -  person Warren P    schedule 01.03.2013


Отговори (4)


Можете да използвате TEdit с височина и ширина 0, за да не се показва и се уверете, че е фокусиран, когато сканирате баркода си.

person Epiphanyx    schedule 25.03.2013

Има свойство KeyPreview на TForm. Задайте го на true, така че всички натискания на клавиши да се обработват първо от формуляра преди контролите.

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

Свързан SO въпрос: Как работи KeyPreview на Delphi?

person Harriv    schedule 27.02.2013

Това, което направих, е да използвам KeyPreview, за да следя за функционален клавиш като F9, с който скенерът за баркод е настроен да префикс сканира. Когато това бъде получено, изскачам диалогов прозорец с едно поле за редактиране и бутон OK. След това получава останалата информация за баркода и скенерът завършва въвеждането с клавиша Enter. След това мога да определя целта на сканираните данни (в моя случай един тип започва с префикс) и след това да поставя данните в съответното поле на основния си формуляр.

Избрах F9, защото изглежда инертен в повечето приложения, така че можете да използвате скенера по други начини, но поддържам и други клавиши за гъвкавост. Моето приложение също има тестов режим на скенер, където показва изпратените ключове.

person mj2008    schedule 27.02.2013

Можете също така да поставите TEdit извън видимия прозорец, като зададете свойствата на компонента Top и Left на нещо като -50. След това можете да зададете фокус върху него точно като обикновено видимо TEdit поле, но то ще бъде невидимо за потребителя.

person Rafael Schmitt    schedule 07.07.2015