Как динамически прокручивать в Tlistbox Delphi xe5

TListbox.topIndex не отображается в Delphi xe5. Как выполнить аналогичную функцию? Я хотел бы, чтобы список прокручивался так, чтобы выбранный элемент находился в верхней части списка.

Я нашел другие примеры, где я могу установить ListBox.itemIndex, но это не прокручивается, так что выбранный элемент находится в верхней части списка.

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


person ThisGuy    schedule 13.12.2013    source источник


Ответы (2)


Я использовал этот код, который работает:

var
  THackListBox = type TListBox;
begin
  THackListBox(ListBox1).VScrollBar.Value := 0;

Свойство VScrollBar защищено, но этот метод предоставляет свойство и позволяет установить для него нулевое значение.

person J__    schedule 06.06.2014
comment
Разве ты не имеешь в виду type, а не var? - person Jerry Dodge; 20.03.2015

В Windows VCL TListBox имеет общедоступное свойство TopIndex, которое внутренне использует LB_SETTOPINDEX сообщение.

В FireMonkey TListBox нет эквивалента. Единственный вариант, который я вижу, - это вызвать метод ScrollTo() ListBox для ручной прокрутки ListBox, чтобы целевой элемент списка отображался там, где вы хотите.

person Remy Lebeau    schedule 13.12.2013