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