在 Delphi Tokyo 上开发应用程序,设备为Lanchang U8000S (http://www.itlecom.com/ProductsDetails.asp?id=1)。创建表单时我使用以下代码:
VKAutoShowMode := TVKAutoShowMode.never;
为了禁止在示例TEdit组件和其他输入组件中输入时显示虚拟键盘,因为在应用程序中可以使用条形码扫描器或硬件数字键盘进行大量输入。我将扫描仪配置为键盘仿真模式,并在扫描后模拟按Enter键。
http://www.lckj.cn/Upload/U8000S_Scan_API.pdf
我使用:
setOutScanMode(1);//keyboard emulation
setScanCodeEnterKey(true);// Additional enter key after the scan results.
问题是,如果您启动应用程序并将光标和焦点放在一个TEdit
组件中,然后扫描条形码,您将得到空结果,并带有回车键,但是如果您调用虚拟键盘并简单地打开后立即关闭它,那么扫描器就可以正常工作并且您可以获得结果!在扫描器不能提供数据的同时,设备上的数字键盘仍然可以正常工作。但是当您在应用程序中进行焦点变换并再次进入某个编辑器时,来自扫描仪的输入再次无法正常工作。
看起来,如果您不使用VKAutoShowMode := TVKAutoShowMode.never;
,则一切都正常,但我不能使用此选项,因为我有很多没有显示虚拟键盘的表单,并且为什么要显示虚拟键盘,如果您不需要它!
看起来还有另一个选项:
setOutScanMode(0) // Broadcast output mode.
但我不知道如何使用这种模式,因为我不知道在哪里接收这些扫描数据!?
希望有人能想出如何解决这个问题!?