Ctrl + Backspace в элементах управления Delphi

комбинация клавиш Ctrl+Backspace обычно удаляет слово слева от каретки. Но он не работает ни в одном из стандартных элементов управления Delphi, которые вы ожидаете (TEdit, TMemo, TComboBox ect.). Интересно, что Ctrl+Delete работает просто отлично.

Кто-нибудь знает, как легко исправить это поведение?

Я знаю, что переопределение процедуры KeyDown сделало бы это, но это слишком сложно, поскольку KeyDown должен быть переопределен для каждого компонента.

Ответ 1

Это не проблема, связанная с Delphi. Действительно, TEdit, а другие элементы управления - только обертки для собственных элементов управления Microsoft Windows, и они ведут себя так. Попробуйте, например, окно редактирования в диалоговом окне "Выбор шрифта". Однако отредактируйте элементы управления с включенным автозавершением, примите горячую клавишу Ctrl + Backspace. Я думаю, что вы можете легко включить это с помощью

SHAutoComplete(Edit1.Handle,
  SHACF_AUTOAPPEND_FORCE_OFF or SHACF_AUTOSUGGEST_FORCE_OFF)

(использует ShLwApi).