| 
| 
 | Вопрос # 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 работает. Спасибо |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |