2013-02-26 84 views
4

我正在开发一个POS(宠物项目),我正在考虑添加条形码扫描仪以更快地捕捉销售。我目前没有扫描仪,并且想要问一些问题,因为我卡住了一些。使用条形码扫描仪与德尔福

在销售屏幕上,我最初的想法是拥有TEdit组件,并且当某人扫描产品时,它会用字符串填充TEdit。现在我遇到的问题是我想让TEdit隐形,以至于人们看不到它。但是,一旦你使TEdit不可见,你就不能将注意力放在它上面,这样该计划就无法工作。

所以任何人都可以建议我可以用来“捕获”扫描的字符串?我将如何让组件倾听并等待扫描仪?我认为扫描仪就像一个普通的键盘事件,就像按下按钮或按下按钮一样。

+2

条形码扫描仪通常会发送击键,所以您可以像处理键盘一样处理它。如果您不想看到可见的编辑,则可以使用OnKey Up/Down/Press事件处理表单级别的按键。 – jachguate 2013-02-26 22:37:31

+0

我明白了,但是一旦出现OnKey事件,我将如何捕获条形码的字符串。用TEdit很容易,因为我可以让字符串出现在TEdit中并从那里取出。 – Japster 2013-02-27 16:19:07

+0

事实证明,问题与条形码扫描仪没什么关系,但更多的是“如何在没有集中控制的情况下接收文本”。是对的吗? – Kromster 2013-02-28 08:06:45

回答

3

您可以使用高度和宽度为0的TEdit,这样它就不会出现,并且确保它在扫描条形码时得到集中。

5

我所做的是使用的KeyPreview监视像F9功能键,其条形码扫描仪设置为前缀扫描。收到此消息后,我弹出一个包含单个编辑框和确定按钮的对话框。然后接收条形码信息的其余部分,扫描仪用Enter键结束输入。然后,我可以确定扫描数据的用途(在我的情况下,一种类型以前缀开头),然后将数据放入主窗体的相应字段中。

我选择了F9,因为它在大多数应用程序中似乎是惰性的,所以您可以通过其他方式使用扫描仪,但我也支持其他键以获得灵活性。我的应用程序还有一个扫描仪测试模式,显示发送的密钥。

0

您还可以将TEdit放在可见窗口的外面,将组件的Top和Left属性设置为-50。然后,您可以像定期可见的TEdit框一样将焦点设置为它,但它对用户是不可见的。