如何在用 Delphi 编写的 Android 应用程序中使用物理键盘处理非英语重音字符?

问题描述

非英语语言通常有变音符号(添加到字母中以改变字母的字形),例如法语中的抑扬符号,如 âê。这些字符通常是通过首先敲击键盘上的死键获得的,例如 ^,然后是我们想要应用变音符号的字母。因此,要获得 â,必须先按 ^ 然后按 a 才能在编辑控件中看到 â

在 Delphi 中使用 FireMonkey 编写 Android 应用程序时,当物理键盘连接到 Android 设备时,无论是通过 USB 还是蓝牙,这些变音符号的处理一直存在问题。

例如,在 Delphi 10.4.x 之前,在 TEditTMemo 中,按 ^ 后跟 a 会得到 { {1}} 而不是预期的 ^a。请注意,不是用 Delphi 编写的应用程序不会出现这种特殊问题。

从 Delphi 10.4.x 开始,â 的问题已得到修复,但不幸的是 TEdit 仍然受到该问题的困扰。当然,如果不使用物理键盘,则一切正常。但是,由于我正在尝试编写一个支持物理键盘的应用程序,特别是在三星 DeX 模式下,这会带来一个严重的问题。

因此,我寻求帮助可能覆盖 TMemo 的键处理,可能使用 TMemo 事件,以解决此问题,该问题阻止非英语用户使用我的应用程序。

知道按下 ^ 时,在 OnKeyDown 事件中我们得到 OnKeyDownKey = $0,我设法拦截变音符号并插入重音字母,但我无法删除变音符号,因此按 ^ 后按 a 会在 KeyChar = 710 中给出 。我不知道如何删除 TMemo 前面的 ^

â

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)