2013-06-21 7 views
1

Я не смог понять, почему я не могу вручную прокручивать компонент TComboBox, когда я программно выставляю список выпадающего списка. Вот код, который я использую:Ручная прокрутка через TComboBox

SendMessage(ComboBox1.handle, CB_SHOWDROPDOWN, Integer(True), 0); 

Это приводит к появлению списка выпадающего списка. Однако, если я попытаюсь использовать свою клавиатуру и использовать клавиши со стрелками вверх и вниз, список выпадающего списка сразу же закрывается. Как сохранить список с автоматическим закрытием при использовании клавиш навигации вверх/вниз?

ответ

5

Активировать ComboBox. И вам лучше использовать свойство DroppedDown, что также делает недействительным значение combobox для отражения изменений.

ActiveControl := ComboBox1; 
ComboBox1.DroppedDown := True; 
+2

Стоит отметить, что ОП в 'CB_SHOWDROPDOWN' только один из более широкого набора оконных сообщений, необходимых для воссоздания полной последовательности активации и опускаясь выпадающим (именно поэтому он не работает сам по себе). Согласился, что это предпочтительный подход. –

+0

Добавление ActiveControl: = ComboBox1; и ComboBox1.DroppedDown: = True; к коду не имеет значения. Выпадающий список по-прежнему будет автоматически закрываться, как только будет нажата клавиша со стрелкой вниз. – user1527613

+0

@user - С моим тестом здесь, с совершенно новой формой с кнопкой и выпадающим списком, активизация combobox делает разницу. Фактически, если я не активирую его, элементы не могут быть изменены с помощью клавиатуры, но выпадающее меню не закрывается. Я предлагаю вам сделать то же самое и попробовать это с новым проектом. –