4

我正在开发一个 POS(宠物项目),我正在考虑添加一个条形码扫描仪以更快地捕获销售。我现在没有扫描仪,想问一些问题,因为我有点卡住了。

在销售屏幕上,我最初的想法是有一个TEdit组件,当一个人扫描产品时,它会TEdit用字符串填充。现在我遇到的问题是我想让它TEdit不可见,这样人就看不到它。但是一旦你把它变成TEdit隐形的,你就不能把注意力集中在它上面,所以这个计划就行不通了。

那么谁能建议我可以用什么来“捕获”扫描的字符串?我如何让组件监听并等待扫描仪?我假设扫描仪就像一个普通的键盘事件,比如按下或按下按钮。

4

4 回答 4

6

TForm 上有KeyPreview属性。将其设置为 true,因此所有按键都在控件之前由表单处理。

Delphi中关于键盘处理的文章:http: //delphi.about.com/od/objectpascalide/a/keyboard_events.htm

相关的 SO 问题:Delphi 的 KeyPreview 是如何工作的?

于 2013-02-27T17:28:47.427 回答
6

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

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

于 2013-02-27T18:00:09.117 回答
3

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

于 2013-03-25T10:38:05.780 回答
0

You can also place the TEdit outside of the visible window, setting the component's Top and Left properties to something like -50. You can then set focus to it just like a regular visible TEdit box, but it will be invisible to the user.

于 2015-07-07T16:59:38.120 回答