我的delphi应用程序与本机键盘不兼容。我该怎么办? 要解释更多,请先看看这些图片:
这是意大利键盘的外观图像: http://en.wikipedia.org/wiki/Keyboard_layout#Italian
您可以在同一页面中找到正常的(美国键盘)。
如果我们使用普通键盘按Shift + 2(或任何Shift +编号),则必须写入 @ ,但如果我们使用意大利语键盘执行“必须写。但在我的应用程序中,使用两个键盘,它将每个键盘视为普通键盘! 例如,当我在意大利语键盘中按Shift + 2时,它键入@而不是“
我正在使用Delphi 7.您可以在此处测试我的应用:en.apadanasoftware.com/forums
Thnx提前
答案 0 :(得分:5)
发送到Delphi应用程序的字符由Windows控制,而不是Delphi,唯一可能的例外是如果您拦截了Windows消息并执行自定义键处理。
如果要将两个键盘连接到同一台PC,这可能是由于加载了错误键盘布局的窗口引起的。
在Windows中转到“控制面板/区域和语言选项”,然后在“语言”选项卡下,按“文本服务和输入语言”组合框中的“详细信息”按钮,您应该可以看到您拥有的键盘布局如果需要,加载并加载新的。
答案 1 :(得分:0)
您在应用程序中收到键盘事件的位置?
如果您使用OnKeyPress事件,例如
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
您将收到密钥为“@”:即转换由Windows完成。
如果您使用OnKeyDown事件,例如
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
您将收到虚拟密钥代码,即原始密钥代码,您必须使用Shift值进行转换。
有关虚拟密钥的信息,请参阅http://msdn.microsoft.com/en-us/library/dd375731(VS.85).aspx。
我猜您在应用程序中使用了OnKeyDown而不是OnKeyPress。
答案 2 :(得分:0)
首先,我几乎被冒犯了,为什么你认为Unitated States键盘是“正常”键盘?它没有我每天需要使用的任何重音字母!笑话放在一边(是的,在我的美国格式键盘上打字),你问的是错误和无关紧要的。原因如下:
"
字符不在同一个按钮2
上的事实不应该与您有关。这是最终的用户选择,最终用户确切地知道按什么键来获取任何符号。你只需要将Shift +“2”解释为"
就可以让他无法为他服务,因为这就是美国键盘上的含义!他会问他为什么要输入"
并在你的申请上获得[
?我想说的是,您的应用程序不可能与本机键盘不兼容。它工作正常,你只是不知道按什么按钮 - 但最终用户知道,因为他拥有电脑和键盘。