Delphi 6 Enterprise Update pack 2 + WinXP SP1
Если в обычном TListBox включить AutoComplete:=True, то, согласно справке (и исходникам) когда я нажимаю в нем алфавитно-цифровые клавиши, он должен "искать" строку, которая начинается с введенных символов. (cм. procedure TCustomListBox.KeyPress) Но, если в списке есть две строки начинающиеся с одного символа -- фокус устанавливается всегда на ВТОРУЮ. Думаю, дело в том, что после "поиска" строки методами VCL, срабатывет также стандартный поиск "виндовсовского" контрола List Box. Вроде-бы для предотвращения этого в указанной TCustomListBox.KeyPress есть следующие строки:
| Код | if not Ord(Key) in [VK_RETURN, VK_BACK, VK_ESCAPE] then Key := #0; // Clear so that the listbox's default search mechanism is disabled |
Но они почему-то не срабатывают.
Если же отключить AutoComplete, то работает только стандарный "поиск" контрола Windows и все в порядке. Но искать он в отличие от TListBox умеет только по первой букве. :-(
Подскажите, ПОЧЕМУ так случается?! Я могу написать поиск сам, но это дело принципа. :-) |