Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 293

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Есть у меня ListBox. Выбираю я в нем какую-то строку. Как сделать так чтобы это строка поднялась на 1ю позицию в этом ListBox (проскролить ее до первой видимой позиции в списке)?

AlexMPEI Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

AlexMPEI (статус: 1-ый класс), 16 октября 2009, 18:35 [#1]:

Нет, данный метод мне не подходит - это изменение списка. Мне нужно именно проскролить, чтобы весь список поднялся выше и выбранная надпись стала первой в видимом окне.
Вадим К

Вадим К (статус: Академик), 16 октября 2009, 19:30 [#2]:

А думали о том, что это не всегда возможно?
Галочка "подтверждения прочтения" - вселенское зло.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 16 октября 2009, 19:37 [#3]:

Думал о том что у ListBox есть метод Scroll на х,у. Также где-то попадала мне на глаза информация что можно получить координаты х,у выбранного айтема. Соединив два этих аспекта я полагаю что это возможно.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 16 октября 2009, 19:39 [#4]:

Паровоз:
Ответ #2. Отвечает эксперт: Паровоз

Здравствуйте, AlexMPEI!
Попробуйте ListBox1.TopIndex:=ListBox1.ItemIndex;

Это я попробовал в первую очередь. в результате мой листбокс поднялся к верхнему краю формы
Вадим К

Вадим К (статус: Академик), 16 октября 2009, 19:42 [#5]:

Координаты можно получить.
Представим себе такую ситуацию - сам лист бокс большой, а в нем два элемента. и выделили мы второй. Конечно, можно с скролом сделать фокус, но... обычно этому противиться сама винда.

А зачем это надо, если не секрет?
Галочка "подтверждения прочтения" - вселенское зло.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 16 октября 2009, 19:49 [#6]:

у меня немножко другая ситуация - при выборе айтема у меня листбокс сворачивается в одну строку. И вот в этой строке мне нужно видеть то что я до этого выбрал. Так что при скроле листбокс всегда маленький
Вадим К

Вадим К (статус: Академик), 16 октября 2009, 19:56 [#7]:

а может Вы просто изобрели ComboBox?
Галочка "подтверждения прочтения" - вселенское зло.
Dron

Dron (статус: Студент), 16 октября 2009, 21:17 [#8]:

Цитата (AlexMPEI):

Это я попробовал в первую очередь. в результате мой листбокс поднялся к верхнему краю формы

А со свойством Top вы не перепутали? Оно за позицию и отвечает, а вот TopIndex как раз делает указанную строку верхней. Я проверил - всё работает. Да и в исходниках можно посмотреть - там ListBox никуда и не двигается.
С уважением.
Паровоз

Паровоз (статус: 10-ый класс), 16 октября 2009, 22:26 [#9]:

"А со свойством Top вы не перепутали"

Теперь секрет поднятия ListBox раскрыт.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 17 октября 2009, 14:31 [#10]:

Вадим К:
"а может Вы просто изобрели ComboBox? "

1) Здесь дело во внешнем виде компонента
2) с листбоксом я достигаю эффект плавного его сворачивания и развертывания следующего
вобщем из чисто визуальных соображений я использую именно листбокс
AlexMPEI

AlexMPEI (статус: 1-ый класс), 17 октября 2009, 14:33 [#11]:

Насчет Тор и ТорИндекс действительно мог перепутать. Меня самого удивила реакция, которую я получил, работая со свойством, отвечающем за индекс. проверю - напишу.
AlexMPEI

AlexMPEI (статус: 1-ый класс), 19 октября 2009, 11:27 [#12]:

Да, все верно, TopIndex работает. Спасибо

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:33
Выполнено за 0.02 сек.