отключить автоматическое изменение раскладки клавиатуры в DbGrids.pas в VCL - PullRequest
5 голосов
/ 18 марта 2012

Я использую ActivateKeyboardLayout(HKL_NEXT, KLF_ACTIVATE); для загрузки персидской раскладки клавиатуры с помощью Delphi XE2, но иногда я нажимаю на элемент управления TextBox или DbGrid, чтобы клавиатура автоматически менялась на английскую раскладку.

Как отключить автоматическое изменение раскладки клавиатуры?

1 Ответ

4 голосов
/ 18 марта 2012

У нас такие же проблемы. Эта ошибка появилась после обновления с 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».

...