Страницы: 1
RSS
Пользовательская Форма. Как показать длинную строку в узком столбце ЛистБокса, UserForm. How to show long String in small Column of ListBox
 
Приветствую!
Господа, подкиньте инфу, пожалуйста...

Если ListBox на UserForm и в нём таблица на 4 столбца. Значения из 1го столбца сильно разные по длине (от 10 до 200 символов), а у остальных примерно одинаковые.

Вопрос: есть ли перенос строк в листбоксе или что-то типа того, что позволит увидеть содержимое, не изменяя ширину 1го столбца по максимальному значению в нём?
Пока придумал только вывод полного содержания в MsgBox по кнопке...
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
в самом листбоксе - никак
но элементарно в текстбоксе (или Лейбл), который заполнять по событию клик Листбокса
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, благодарю -  я об этом даже не подумал, а ведь это лучше, чем мой MsgBox)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
C ListBox это скучно... Куда веселей все это с ComboBox.
 
RAN, расскажете?)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
:)
 
RAN, за варианты спасибо, а за историю — большое спасибо  :D

Из преимуществ комбобокса:
  • поиск по первым символам (этого недостаточно)
  • можно скроллить по строке внутри него при выборе (неудобно)
В любом случае, эти моменты зафиксировал для себя — ещё раз спасибо!  :idea:

Пока использую TextBox для вывода полного наименования для выделенного элемента ListBox
Изменено: Jack Famous - 06.08.2022 22:10:02
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
за историю — большое спасибо
Это не мне. Это Андрею Белянину
Изменено: RAN - 06.08.2022 22:29:39
 
RAN, пацан (герой рассказа) к успеху шёл  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
И дошел. А.Белянин. Тайный сыск царя Гороха.
 
Цитата
Jack Famous написал:
не изменяя ширину 1го столбца по максимальному значению в нём?
А если посмотреть в сторону ListView, там конечно переноса строк нет, но зато можно вручную менять ширину столбца. Вот ТУТ есть интересный пример с хорошим описанием от Alex_ST и ссылка на ТУТ где пример от ZVI
 
Цитата
Msi2102: ListView
как минимум, необычный и интересный вариант — спасибо!  :idea:
Встроенные "плюшки", конечно, подкупают, однако, у меня на компе нет нужной библы, а значит, придётся её найти, поставить, зашить в файл и распаковывать каждый раз. Оно того не стоит — сортировку я и сам могу сделать по клику, а раздвигать столбец ради одного значения гораздо менее удобно, чем, при клике по значению в ЛистБоксе, в большом ТекстБоксе сверху (с переносами) сразу увидеть полную информацию.
Если бы не библа, то потестил бы, а так сразу нет…

Ещё раз спасибо — не слышал о таком и лишним точно не будет  ;)
Изменено: Jack Famous - 08.08.2022 11:16:37
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Можно рассмотреть варианты эмуляторов Листбокса. Например, интересный способ LikeListbox.xlsb от Андрей VG. Вроде как вариант простой, но сильно объектный и при моих скудных знаниях VBA для понимания недоступен.
Интересно, что в той же теме Максим Зеленский упоминал, что "есть куча других похожих контролов", но в интернетах я этой самой кучи не нашёл.
 
Ещё вариант псевдолистбокса.
Как и что там делать - описано в модуле m_UserFormPseudoListBox. Кратко: на форму кинуть только рамку и создать любым способом массивы с данными и с ширинами столбцов для использования при инициализации формы. Прочие настройки - в том же модуле.

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

Для тестирования на форме добавлены:
  1. Текстбокс для смены наименования.
  2. Комбобокс для смены типа Мультивыбора.
  3. Листбокс с кнопкой для получения списка выделенных строк.

Для своего использования: все эти контролы можно удалить. Также во всех модулях надо удалить весь код между ' <Test> и ' </Test>.
Ну и само собой, нужно удалить модули UserFormUsualListBox и m_UserFormUsualListBox, которые оставлены как пример.

Ложка мёда: сделано на чистом VBA без дополнительных библиотек, т.е. теоретически будет работать на любой версии Excel любого компьютера с любой операционной системой. Модуль с API используется только как фишка для прокрутки списка колёсиком мыши и его (модуль) можно удалить, если будет мешать.
Бочка дёгтя (очевидная): реально можно работать с данными менее тысячи строк, ибо тормоза нарастают в геометрической прогрессии с увеличением количества данных.
 
tolikt, за вариант спасибо, конечно, но даже на тестовых небольших данных жутко тормозит.
Ручное изменение ширины столбца не нужно - ширина листбокса с запасом и наличие полосы прокрутки делает это совершенно лишним.
Вариант с отдельным окошком и переносом строк в нём пока что прекрасно себя показывает и безо всяких ограничений. Делается и контролируется очень легко.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
Вариант с отдельным окошком и переносом строк в нём пока что прекрасно себя показывает и безо всяких ограничений. Делается и контролируется очень легко.
А можно с примером?
 
Цитата
Евгений Киреев: А можно с примером?
если вы не можете создать TextBox на UserForm, то никакой пример вам не поможет
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Я могу создать TextBox на UserForm и как это мне поможет понять без примера?
 
Евгений Киреев,  так сначала огт Вас нужен пример с формой, с контролами, с данными )
 
Евгений Киреев, ну так создайте форму с листбоксом и комбобоксом, прикрепите файл сюда и уже тогда, уверен, вам помогут.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх