Delphi XE2を使用ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);
してペルシャ語のキーボード レイアウトをロードしていましたが、TextBox または DbGrid コントロールをクリックすると、キーボードが自動的に英語のレイアウトに変更されます。
キーボード レイアウトの自動変更を無効にするにはどうすればよいですか?
Delphi XE2を使用ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE);
してペルシャ語のキーボード レイアウトをロードしていましたが、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 ブロック」を追加した理由がわかりません。変更すると、キーボード レイアウトがデフォルトに戻ります。DBGrid をプロジェクトにコピーし、「if ブロック」を削除する必要がありました。