Вниз
Скачать: CL | DM;

Правильная работа с ComboBox csDropDown   Найти похожие ветки 

← →
hepry ©   (2003-10-31 14:38) [0]

Здравствуйте!
Никак не разобраться.
Combobox на форме является списком неких объектов (скажем фильтров), параметры которых определяются другими объектами на форме. Бъюсь над тем, чтобы можно было бы именовать эти объекты прямо в комбо (Style:=csDropDown, AutoComplete:=false).
OnChange как будто ищет в комбо элемент с вводимой строкой и выбивает ItemIndex в -1. (даже inherited в методе, что OnChange, комментировал, результата нет)
Как добиться нужного поведения?

Заранее спасибо.


← →
ZEE ©   (2003-10-31 14:45) [1]

если я правильно понял - идется про подсветку возможного варианта ввода в ComboBox"е - так ItemIndex и будет =-1 пока ты не введешь правильную строку (т.е. кот. есть в списке)


← →
hepry ©   (2003-10-31 14:49) [2]

ок. по другому (что-то сегодня у меня с лексикой :)

Переименовать конкретный Item[ItemIndex]:=Text можно из самого комбо? Или стиль csDropDown только для ввода/поиска существующих строк в контроле?


← →
Юрий Федоров ©   (2003-10-31 15:04) [3]

Нельзя. Только программно. Но это очень криво, имхо


← →
hepry ©   (2003-10-31 15:57) [4]

Пришлось извращаться.
Обнаружил такую последовательность событий:
OnKeyDown
OnChange
OnKeyUp

Посему, в cbxKeyDown ставлю флаг cbx.Tag:=1, cbx.HelpContext:=cbx.ItemIndex

а в cbxChange
if cbx.Tag=1 then
begin
cbx.Tag:=0;
exit;
end;
....<то, что делать при выборе элемента из комбо>

и уже в KeyUp
cbx.Items[cbx.HelpContext]:=cbx.Text;
cbx.ItemIndex:=cbx.HelpContext;

---
только теперь приходиться заморачиваться с SelLength и SelStart

:-)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.033 c
3-41096
Devourer
2003-10-22 16:47
2003.11.13
Delphi+Oracle


7-42185
Speaker
2003-08-29 10:29
2003.11.13
Перенос данных в реестре


8-41755
m_e_t_a_n
2003-07-09 09:25
2003.11.13
DrawGrid!!!


3-41066
ФРИМЕН
2003-10-23 20:57
2003.11.13
Помогите разобраться с БД


14-42053
Sergo
2003-10-24 09:39
2003.11.13
Теория алгоритмов




   Наверх