Здравствуйте, Vodyamba, Вы писали:
V>Помогите плиз... нужен компонент, или я не знаю где такое свойство у стандартного компонента... V>Нужен Combobox такой как на верху у Object inspector в Delphi.
V>Например: когда на ворме три компонента GroupBox1,2,3. мы вводим букву g, в комбобоксе отображается groupbox1, но когда мы продолжаем вводить и на нажимаем все буквы (groupbox3) то в комбобоксе оно и высвечивается...
V>В стандартном компоненте если установлено свойство dropdownlist, то он ищет только по первой букве всегда...
V>Неужеле это интересно только мне???
Странные вы какие-то... все нормально работает... зачем столько воротить!
смотрим:
procedure TCustomComboBox.KeyPress(var Key: Char);
..................
begin
inherited KeyPress(Key);
if not AutoComplete then exit;
if Style in [csDropDown, csSimple] then
FFilter := Text
else
begin
if GetTickCount - FLastTime >= 500 then
FFilter := '';
FLastTime := GetTickCount;
end;
ну и дальше по тексту...
конечно не сильно удобно что константой 500мс выставленно, но! функция виртуальная!!! код на 99% можно оставить!
но мне всегда и этого хватало. может всетаки что-то где-то перехватывается не в тему?
Здравствуйте, alive, Вы писали:
A>В инспекторе, по-моему, в самом гриде комбобокс со стилем DropDown, а наверху DropDownList.
Интересует комбобокс, который наверху...
Он со стилем DropDownList, но если у наст на формк всего 2 edit (edit1 и edit2), то, когда мы нажимаем первую букву (e), у нас на в комбобоксе отображается edit1, т.к. он первый в сортировке по алфавиту, но если мы введём остальные символы (e d i t 2), то отобразится edit2
A> И ничего там особенного нет.Потом, насколько я знаю, начиная с 6 Delphi у комбобокса есть свойство AutoComplete или что-то вроде этого (могу ошибаться)
Свойство, то есть, только оно не для моего случая... оно работает только со свойством DropDown (Заканчивает введённую фразу или нет)
V>>Я хочу так же если есть где то готовое решение помогите. Плиз. A>А ты погугли на эту тему .Все решения основанные на виндосовском комбобоксе сводятся к тому, что уже приводили. А из сторонних компонентов посмотри здесь (не устанавливал)
Попытался... скачал только 2 набора демок, или компонент...
1 набор "Paradox Table Repair Components" вообще не компилится, не может найти один модуль...
2 набор "DTalk" видать для работы с голосовой информацией, но разобраться за 15 мин. не смог, т.к. нет хелпа... да и время жаль, хотя интересно для чего написаны эти 10 компонент...
3 набор "Combobox Plus" неизвестно от куда качать переходит в меню закачки 1 и 2 пункта...
Здравствуйте, ak_miass, Вы писали:
_>Здравствуйте, Vodyamba, Вы писали:
V>>Мне надо: V>> 1. чтобы пользователь не мог ввести в комбобококс данные отличные от его Items. Для этого есть свойство DropdownList. V>> 2. т.к. комбобокс содержит около 1000 строк, то неудобно их выбирать, а при DropDownList уточняющий поиск только по первому символу.
_>Может тогда лучше сделать csSimple, примерно как в предметном указателе в WinHelp.
Неа... в симпле можно ввести значение, которого нет в items, а мне это недопустимо...
Здравствуйте, Oleg A. Bachin, Вы писали:
OAB>Странные вы какие-то... все нормально работает... зачем столько воротить! OAB>смотрим: OAB>
OAB>procedure TCustomComboBox.KeyPress(var Key: Char);
OAB>..................
OAB>begin
OAB> inherited KeyPress(Key);
OAB> if not AutoComplete then exit;
OAB> if Style in [csDropDown, csSimple] then
OAB> FFilter := Text
OAB> else
OAB> begin
OAB> if GetTickCount - FLastTime >= 500 then
OAB> FFilter := '';
OAB> FLastTime := GetTickCount;
OAB> end;
OAB>
OAB>ну и дальше по тексту...
Извините, но не понятно по какому тексту... т.к. ответов и предложений было много...
V>Неа... в симпле можно ввести значение, которого нет в items, а мне это недопустимо...
А ты попробуй ввести в том же Help значение, которого нет в списке, и затем нажми "Показать". ИМХО, в случае с 1000 строк такой вариант будет удобнее для пользователя.
Здравствуйте, ak_miass, Вы писали:
_>А ты попробуй ввести в том же Help значение, которого нет в списке, и затем нажми "Показать". ИМХО, в случае с 1000 строк такой вариант будет удобнее для пользователя.
Для этого надо заняться более глобальной переработкой ПС, а в случае с умным комбобоксом — только замена самого комбобокса на новый.
Просто не хотелось изобретать велосипед, а выходит, что такого велосипеда ещё нет...
Здравствуйте, Vodyamba, Вы писали:
V>Интересует комбобокс, который наверху... V>Он со стилем DropDownList, но если у наст на формк всего 2 edit (edit1 и edit2), то, когда мы нажимаем первую букву (e), у нас на в комбобоксе отображается edit1, т.к. он первый в сортировке по алфавиту, но если мы введём остальные символы (e d i t 2), то отобразится edit2
Что-то я ступил. При установленом стиле DropDownList будет искать по всем введенным буквам при раскрытом списке и свойстве Sorted:= True.
... << RSDN@Home 1.1.4 beta 5 rev 411 >> <<Aerosmith — [Big Ones] Livin On The Edge>>
Здравствуйте, alive, Вы писали:
A>Здравствуйте, Vodyamba, Вы писали:
V>>Интересует комбобокс, который наверху... V>>Он со стилем DropDownList, но если у наст на формк всего 2 edit (edit1 и edit2), то, когда мы нажимаем первую букву (e), у нас на в комбобоксе отображается edit1, т.к. он первый в сортировке по алфавиту, но если мы введём остальные символы (e d i t 2), то отобразится edit2
A>Что-то я ступил. При установленом стиле DropDownList будет искать по всем введенным буквам при раскрытом списке и свойстве Sorted:= True.
Вроде работает, но не пойму логики... Иногда надо набирать первую букву (иногда и остальные) по два раза чтобы он начинал искать...