我使用ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);
Delphi XE2 加载波斯语键盘布局,但有时我点击 TextBox 或 DbGrid 控制键盘自动更改为英文布局。
如何禁用键盘布局的自动更改?
我使用ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);
Delphi XE2 加载波斯语键盘布局,但有时我点击 TextBox 或 DbGrid 控制键盘自动更改为英文布局。
如何禁用键盘布局的自动更改?
我们有同样的问题。从 D2006 升级到 D2010 后出现此错误。
问题出在 DBGrids.pas 中:
procedure TCustomDBGrid.WMKillFocus(var Message: TMessage);
begin
ImeName := Screen.DefaultIme;
ImeMode := imDontCare;
inherited;
if not ((InplaceEditor <> nil) and
(HWND(Message.WParam) = InplaceEditor.Handle)) then
ActivateKeyboardLayout(Screen.DefaultKbLayout, KLF_ACTIVATE);
end;
我不知道为什么 Borland/Embarcadero 在继承后添加了“if block”。更改会导致将键盘布局切换回默认值。我们必须将 DBGrids 复制到我们的项目中并删除“if block”。