|
Вопрос # 3 293/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Есть у меня ListBox. Выбираю я в нем какую-то строку. Как сделать так чтобы это строка поднялась на 1ю позицию в этом ListBox (проскролить ее до первой видимой позиции в списке)?
 |
Вопрос задал: AlexMPEI (статус: 1-ый класс)
Вопрос отправлен: 16 октября 2009, 18:22
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, AlexMPEI!
написать такой обработчик для кнопки "переместить"
begin
with AListBox do
if ItemIndex > 0 then // убедимся, что элемент выбран и это как минимум второй
begin
Items.Move(ItemIndex, 0); //собственно переместим
ItemIndex := 0; //и фокус переведем.
end;
end;
Если же хочется, что бы просто кликнул и элемент переместился - никто не мешает вставить это в обрабочик OnClick ListBox'a
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 16 октября 2009, 18:29
|
Ответ #2. Отвечает эксперт: Паровоз
Здравствуйте, AlexMPEI!
Попробуйте ListBox1.TopIndex:=ListBox1.ItemIndex;
 |
Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 16 октября 2009, 19:24
|
Мини-форум вопроса
Всего сообщений: 12; последнее сообщение — 19 октября 2009, 11:27; участников в обсуждении: 4.
|
AlexMPEI (статус: 1-ый класс), 16 октября 2009, 18:35 [#1]:
Нет, данный метод мне не подходит - это изменение списка. Мне нужно именно проскролить, чтобы весь список поднялся выше и выбранная надпись стала первой в видимом окне.
|
|
Вадим К (статус: Академик), 16 октября 2009, 19:30 [#2]:
А думали о том, что это не всегда возможно?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
AlexMPEI (статус: 1-ый класс), 16 октября 2009, 19:37 [#3]:
Думал о том что у ListBox есть метод Scroll на х,у. Также где-то попадала мне на глаза информация что можно получить координаты х,у выбранного айтема. Соединив два этих аспекта я полагаю что это возможно.
|
|
AlexMPEI (статус: 1-ый класс), 16 октября 2009, 19:39 [#4]:
Паровоз:
Ответ #2. Отвечает эксперт: Паровоз
Здравствуйте, AlexMPEI!
Попробуйте ListBox1.TopIndex:=ListBox1.ItemIndex;
Это я попробовал в первую очередь. в результате мой листбокс поднялся к верхнему краю формы
|
|
Вадим К (статус: Академик), 16 октября 2009, 19:42 [#5]:
Координаты можно получить.
Представим себе такую ситуацию - сам лист бокс большой, а в нем два элемента. и выделили мы второй. Конечно, можно с скролом сделать фокус, но... обычно этому противиться сама винда.
А зачем это надо, если не секрет?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
AlexMPEI (статус: 1-ый класс), 16 октября 2009, 19:49 [#6]:
у меня немножко другая ситуация - при выборе айтема у меня листбокс сворачивается в одну строку. И вот в этой строке мне нужно видеть то что я до этого выбрал. Так что при скроле листбокс всегда маленький
|
|
Вадим К (статус: Академик), 16 октября 2009, 19:56 [#7]:
а может Вы просто изобрели ComboBox?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Dron (статус: Студент), 16 октября 2009, 21:17 [#8]:
Цитата (AlexMPEI):
Это я попробовал в первую очередь. в результате мой листбокс поднялся к верхнему краю формы
А со свойством Top вы не перепутали? Оно за позицию и отвечает, а вот TopIndex как раз делает указанную строку верхней. Я проверил - всё работает. Да и в исходниках можно посмотреть - там ListBox никуда и не двигается.
С уважением.
|
|
Паровоз (статус: 10-ый класс), 16 октября 2009, 22:26 [#9]:
"А со свойством Top вы не перепутали"
Теперь секрет поднятия ListBox раскрыт.
|
|
AlexMPEI (статус: 1-ый класс), 17 октября 2009, 14:31 [#10]:
Вадим К:
"а может Вы просто изобрели ComboBox? "
1) Здесь дело во внешнем виде компонента
2) с листбоксом я достигаю эффект плавного его сворачивания и развертывания следующего
вобщем из чисто визуальных соображений я использую именно листбокс
|
|
AlexMPEI (статус: 1-ый класс), 17 октября 2009, 14:33 [#11]:
Насчет Тор и ТорИндекс действительно мог перепутать. Меня самого удивила реакция, которую я получил, работая со свойством, отвечающем за индекс. проверю - напишу.
|
|
AlexMPEI (статус: 1-ый класс), 19 октября 2009, 11:27 [#12]:
Да, все верно, TopIndex работает. Спасибо
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|