1 (изменено: vinkonik, 2014-05-14 13:47:29)

Тема: VBA: ScrollBar в ListBox

Всем добрый день!

Есть задача:

Форма, в форме несколько ListBox-ов. Нужно синхронизировать прокрутку всех ListBox-ов.

В сети нашел предложение: Управлять скроллом ListBox-ов через отдельный объект ScrollBar, размещенный на форме. Т.е. отключить в ListBox-ах ScrollBar и программно управлять событием Scroll в зависимости от значения "общего" SkrollBar-а.

Но, к сожалению, примера (кода) никакого не прикладывалось.

Частично сделал (как сумел, может коряво, не впрямую... насколько хватило мозгов). Все ListBox-ы прокручиваются как надо. Но есть одна проблема.

Как в ListBox убрать ScrollBar? Вообще, возможно такое? Или делать, как советовал "теоретик" - Закрыть область ScrollBara в ListBox-е каким-нибудь объектом, например картинкой (прямоугольник цвета фона)?

Что скажете? Что посоветуете?

Кстати, а событие Scroll (которым можно управлять) у LisBox есть? Что-то я нигде не нашел......

2

Re: VBA: ScrollBar в ListBox

Кстати, а событие Scroll (которым можно управлять) у LisBox есть? Что-то я нигде не нашел......

Я тоже. Потому как можно решать заявленную задачу не представляю.

3 (изменено: vinkonik, 2014-05-15 16:21:52)

Re: VBA: ScrollBar в ListBox

Ладно, похоже, ScrollBar-ом в ListBox-е управлять не получится.

Попытался закрыть его объектом. Тоже чепуха получилась.

Из 10 открытий формы только 1 раз объект оказался поверх ScrolBar-а.

Можно как-то программно принудительно размещать на форме один объект поверх другого объекта? (Или хотя бы при создании формы задать такой параметр?)

И еще, из-за этого ScrollBar-а скрывается правая часть колонки ListBox-а (значения отформатированы по правому краю, поэтому часть значения не видна). Пока вышел из положения, создав еще одну пустую колонку с шириной ScrollBar-а. Может есть другое решение?

4

Re: VBA: ScrollBar в ListBox

Попытался закрыть его объектом.

А глубинный смысл? Это ведь ничуть не помешает использовать прокрутку.

Я вообще не пойму, зачем Вам несколько ListBox'ов с синхронной прокруткой. Используйте вместо них один ListView в режиме Detailed.

5

Re: VBA: ScrollBar в ListBox

А глубинный смысл? Это ведь ничуть не помешает использовать прокрутку.

Это закроет доступ к ScrollBar-у ListBox-а. А прокруткой буду синхронно управлять через объект ScrollBar (это я уже сделал).

Я вообще не пойму, зачем Вам несколько ListBox'ов с синхронной прокруткой. Используйте вместо них один ListView в режиме Detailed.

Если честно, не пробовал. Сейчас проверю, если результат будет соответствовать необходимым требования, то откажусь от ListBox-ов

6

Re: VBA: ScrollBar в ListBox

Никогда не работал с ListView. Начал разбираться и понял, что: 1. нужно время, чтоб все о нем понять (а результат нужен, как можно быстрее), 2. Придется переписывать большой кусок уже работающего кода (а это - тоже, время).
Но, надо будет изучить. Похоже, тема стоящая.

Поэтому, решил дожать тему с ListBox-ами.

И, кажется, дожал. Требуемый результат получил (нашел, как извернуться). Немного потестю, проверю "на дурака".  Надеюсь, что удалось.

Спасибо, alexii, за мысль о ListView. Изучу и, если действительно окажется, что нужный результат проще достигается, со временем перепишу код (когда этого времени будет побольше smile)