Re: Умное свойство в Combobox
От: Oleg A. Bachin Украина  
Дата: 18.04.05 12:58
Оценка:
Здравствуйте, 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% можно оставить!
но мне всегда и этого хватало. может всетаки что-то где-то перехватывается не в тему?
Best regards,
Oleg A. Bachin
Re[14]: Умное свойство в Combobox
От: Vodyamba Россия  
Дата: 19.04.05 10:17
Оценка:
Здравствуйте, 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 пункта...
Re[10]: Умное свойство в Combobox
От: Vodyamba Россия  
Дата: 19.04.05 10:17
Оценка:
Здравствуйте, ak_miass, Вы писали:

_>Здравствуйте, Vodyamba, Вы писали:


V>>Мне надо:

V>> 1. чтобы пользователь не мог ввести в комбобококс данные отличные от его Items. Для этого есть свойство DropdownList.
V>> 2. т.к. комбобокс содержит около 1000 строк, то неудобно их выбирать, а при DropDownList уточняющий поиск только по первому символу.

_>Может тогда лучше сделать csSimple, примерно как в предметном указателе в WinHelp.

Неа... в симпле можно ввести значение, которого нет в items, а мне это недопустимо...
Re[2]: Умное свойство в Combobox
От: Vodyamba Россия  
Дата: 19.04.05 10:17
Оценка:
Здравствуйте, 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>ну и дальше по тексту...
Извините, но не понятно по какому тексту... т.к. ответов и предложений было много...
Re[11]: Умное свойство в Combobox
От: ak_miass Россия  
Дата: 19.04.05 11:22
Оценка:
Здравствуйте, Vodyamba, Вы писали:


V>Неа... в симпле можно ввести значение, которого нет в items, а мне это недопустимо...


А ты попробуй ввести в том же Help значение, которого нет в списке, и затем нажми "Показать". ИМХО, в случае с 1000 строк такой вариант будет удобнее для пользователя.
Re[12]: Умное свойство в Combobox
От: Vodyamba Россия  
Дата: 20.04.05 09:24
Оценка:
Здравствуйте, ak_miass, Вы писали:

_>А ты попробуй ввести в том же Help значение, которого нет в списке, и затем нажми "Показать". ИМХО, в случае с 1000 строк такой вариант будет удобнее для пользователя.


Для этого надо заняться более глобальной переработкой ПС, а в случае с умным комбобоксом — только замена самого комбобокса на новый.

Просто не хотелось изобретать велосипед, а выходит, что такого велосипеда ещё нет...
Re[15]: Умное свойство в Combobox
От: alive Россия  
Дата: 20.04.05 13:02
Оценка:
Здравствуйте, 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>>
Keep yourself alive
Re[16]: Умное свойство в Combobox
От: Vodyamba Россия  
Дата: 22.04.05 08:27
Оценка:
Здравствуйте, alive, Вы писали:

A>Здравствуйте, Vodyamba, Вы писали:


V>>Интересует комбобокс, который наверху...

V>>Он со стилем DropDownList, но если у наст на формк всего 2 edit (edit1 и edit2), то, когда мы нажимаем первую букву (e), у нас на в комбобоксе отображается edit1, т.к. он первый в сортировке по алфавиту, но если мы введём остальные символы (e d i t 2), то отобразится edit2

A>Что-то я ступил. При установленом стиле DropDownList будет искать по всем введенным буквам при раскрытом списке и свойстве Sorted:= True.


Вроде работает, но не пойму логики... Иногда надо набирать первую букву (иногда и остальные) по два раза чтобы он начинал искать...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.