Как сделать так, чтобы мой пользовательский вид дерева принимал клавишу Enter? - PullRequest
3 голосов
/ 21 февраля 2011

У меня есть пользовательский элемент управления, который происходит от TTreeView. Я пытаюсь придать ему особое поведение, когда пользователь нажимает клавишу ВВОД, когда элемент управления сфокусирован, предоставляя ему обработчик WM_CHAR, который отвечает на VK_RETURN, но никогда не вызывается.

Я попытался убедиться, что он будет принимать все ввод с клавиатуры, добавив обработчик WM_GETDLGCODE, который говорит msg.Result := msg.Result or DLGC_WANTALLKEYS;. Теперь он получает клавишу ВВОД, но клавиши со стрелками больше не работают!

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

1 Ответ

4 голосов
/ 21 февраля 2011

Я всегда делаю

WM_GETDLGCODE: Message.Result := Message.Result or DLGC_WANTCHARS or
                                 DLGC_WANTARROWS or DLGC_WANTTAB or
                                 DLGC_WANTALLKEYS;

при написании текстовых редакторов. Может быть, вы просто забыли DLGC_WANTARROWS?

...