У нас есть определенная форма поиска на работе, которая была обновлена в последнее время. Его функциональность - это стандартная форма поиска: введите несколько критериев в некоторые поля вверху, нажмите кнопку «Поиск» и отобразите результаты в сетке ниже. Но он был уродливым и очень ограниченным по функциональности, поэтому один из моих коллег перестроил его ... прямо перед отъездом на новую работу. Теперь я пытаюсь выполнить последние несколько деталей.Как сделать нажатие клавиши TVirtualStringTree с более высоким приоритетом?
Одним из изменений стала замена старой сетки TListBox
гораздо более мощным TVirtualStringTree
. Но в этом процессе, похоже, что-то сломалось: раньше, если вы щелкнули по строке в сетке (указав сетку в фокусе фокуса) и нажав Введите, соответствующий обработчик событий будет запускать и обрабатывать ваш ввод, открытие подробное представление выбранного элемента. В этой сетке, однако, нажатие Введите вызывает TButton
на форме с Default = true
собственности, чтобы запустить его OnClick
вместо.
Как я могу сделать TVirtualStringTree
иметь преимущество, когда он имеет фокус ввода, так что он будет реагировать на то, что пользователь будет нажимать клавишу Enter перед (и предпочтительно вместо), отправляя ее в форму?
Хм ... это, вероятно, будет работать, но есть ли решение, которое не требует изменения кода стороннего компонента? –
Добро пожаловать. Вам не нужно изменять код. Вы можете использовать посредник, или вы можете перехватить оконную процедуру, присвоив свойству «WindowProc» элемента управления. Если вы не обрабатываете 'WM_GETDLGCODE', тогда кнопка по умолчанию получит сообщение. Который вы не хотите. –
Ничего себе. На самом деле я не знал, что свойство «WindowProc» - вещь. Это оказалось именно тем, что мне нужно было исправить. Благодаря! –