Страницы: 1
RSS
Полоса прокрутки для CheckBox'ов
 
Доброе время суток, добрые форумчане, столкнулся с задачей - необходимо дать пользователю выбрать энное количество, причем постоянно меняющееся, вариантов значений (имена полей) в диалоговом окне. В принципе, все просто - делаются CheckBox'ы с лейблами из массива. Но их более 100 штук в каждом случае, и на юзерформу влезает только 24 штуки.Как прикрутить полосу прокрутки, которая прокручивала бы мне список этих чекбоксов? Весь интернет вычитал, ничего толкового не нашел.

Пока вариант наклевывается только один - менять Caption для всего списка в зависимости от ScrollBar.Value и потом, при обработке брать текущее значение Caption, сравнивать с массивом  таким образом, у нас получится выборка из массива, которую хочет юзер.
Но это напоминает чесание левого уха правой пяткой.
Нет ли решения попроще?
Изменено: kohet - 20.10.2020 07:38:02 (загрузил скриншот)
 
Доброе время суток
Цитата
kohet написал:
Как прикрутить полосу прокрутки
Поместить ваши checkboxes во Frame и настроить в нём прокрутку.
Цитата
kohet написал:
Весь интернет вычитал
Без бла-бла, пожалуйста.
 
Цитата
kohet написал:
Нет ли решения попроще?
Сделать это на листе :)
 
Цитата
Андрей VG написал:
Поместить ваши checkboxes во Frame
А в чем разница между Frame и просто формой в этом случае? Полоса прокрутки ж точно так же обрабатывается как в рамке, так и на форме, не?
 
Цитата
kohet написал:
в чем разница между Frame и просто формой в этом случае?
Если у вас только checkboxes - то никакой. Если хотя бы ещё кнопки Ok и Отмена, то их-то зачем крутить?
 
Пример во вложении
Включаем прокрутку на форме и настраиваем высоту в инициализации
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
_Igor_61, мы все сталкиваемся с одной проблемой - пользователь тупой, и делать на листе диалог выбора это однозначно вогнать его в ступор.
Тут вон написал как-то в инструкции к макросу, что значения в форме прогрузки должны быть уникальными, целая группа людей с ИНЖЕНЕРНЫМ образованием этой фразы в упор не поняла, и упорно пихала неуникальные списки, что же от него требуется, пришлось писать дополнительно создание уникального списка из предлагаемого пользователем файла. Бухгалтерия тем паче не поймет.
 
Alemox, Спасибо, дельно. Сейчас попробую.
 
Off
kohet, Вы меня конечно простите, меня трудно отнести к категории тупых пользователей , но если б  мне предложили такую форму
Цитата
kohet написал:
Но их более 100 штук в каждом случае, и на юзерформу влезает только 24 штуки
я б сразу послал куда подальше. Сами посудите, как удобно искать нужный среди неотсортированных названий. Может даже и наглядность  выше , если значений всего 10-20, но потом  - ад. Это не относится к самому вопросу, но подумайте об этом.
По вопросам из тем форума, личку не читаю.
 
Цитата
kohet написал:
Но их более 100 штук в каждом случае, и на юзерформу влезает только 24 штуки
в таких случаях делают ListBox со свойством ListStyle = fmListStyleOption и MultiSelect = fmMultiSelectMulti:
Код
    ListBox1.AddItem "aaa"
    ListBox1.AddItem "bbb"
    ListBox1.ListStyle = fmListStyleOption
    ListBox1.MultiSelect = fmMultiSelectMulti
и обрабатывать проще и прокрутка есть сама по себе уже. Если нужно сделать так, чтобы не было заметно, что это ListBox, то можно еще кой-какие свойства подкрутить и будет как будто CheckBox-ы прямо на форме:
Код
    ListBox1.BackColor = Me.BackColor
    ListBox1.BorderStyle = fmBorderStyleNone
    ListBox1.SpecialEffect = fmSpecialEffectFlat
Изменено: Дмитрий(The_Prist) Щербаков - 20.10.2020 08:40:40
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
БМВ, там ситуация в том, что есть чертова уйма разных табличек, в которых только юзер может определить, в каом поле могут находиться нужные значения. Шапки там разные, но их все надо прочесать и сделать выборку по соответстию с группой значений. Альтернативой является только менюшка с жестким указанием номеров столбцов для каждого случая или прописывание имени столбца, но юзер первого не понимает, а во втором неизбежно наделает ошибок, что сведет всю полезность макроса к нулю.  
 
kohet, первое что приходило в голову это то что предложил Дмитрий, но честно, я б дополнил и сделал наполняемы лист бокс, из списка в котором можно искать. Из лист бокса сделал бы возможным удаление ошибочно введенных или просто лишних.... то есть комбо с мультивыбором и лист с тем же. То что в лист боксе -  по тому и ищем. при желании настройку можно сохранять для следующего поиска или вызова формы.
Изменено: БМВ - 20.10.2020 09:00:18
По вопросам из тем форума, личку не читаю.
 
Цитата
Alemox написал: Включаем прокрутку на форме и настраиваем высоту в инициализации
Еще раз огромное спасибо. Взлетело на раз. Вот что значит, грамотно формулировать запросы. Гугл на запрос "полоса прокрутки в юзерформе" вываливал результат по элементу управления, и я полночи вычитывал то, что можно было сделать в минуту.

Дмитрий(The_Prist) Щербаков, спасибо, не знал, что у листбокса мультиселект включается.  Идея маскировать прокрутку очень занятна.  
Страницы: 1
Наверх