Приведем часто используемые свойства элемента управления ListBox (cписок), применяемого для хранения списка значений. Из списка пользователь может выбрать одно или несколько значений, которые в последующем будут использоваться в тексте программы (таблица 4.6).
Таблица 4.6 – Основные свойства элемента управления ListBox
Свойство | Описание |
ListIndex | Возвращает номер текущего элемента списка. Нумерация элементов списка начинается с нуля |
ListCount | Возвращает число элементов списка |
TopIndex | Возвращает элемент списка с наибольшим номером |
ColumnCount | Устанавливает число столбцов в списке |
TextColumn | Устанавливает столбец в списке, элемент которого возвращается свойством Text |
Enabled | Допустимые значения: True (запрещен выбор значения из списка пользователем) и False (в противном случае) |
Text | Возвращает выбранный в списке элемент |
List | Возвращает элемент списка, стоящий на пересечении указанной строки и столбца: List(row, column) |
RowSource | Устанавливает диапазон, содержащий элементы списка |
ControlSource | Устанавливает диапазон (ячейку), куда возвращается выбранный элемент из списка |
MultiSelect | Устанавливает способ выбора элементов списка. Допустимые значения: - fmMultiSelectSingle (выбор только одного элемента); - fmMultiSelectMulti (разрешен выбор нескольких элементов посредством либо щелчка, либо нажатием клавиши <Пробел>); - fmMultiSelectExtended (разрешено использование клавиши <Shift> при выборе ряда последовательных элементов списка) |
Selected | Допустимые значения: True (если элемент списка выбран) и False (в противном случае). Используется для определения выделенного текста, когда свойство MultiSelect имеет значение fmMultiSelect-Multi или fmMultiSelectExtended. |
ColumnWidths | Устанавливает ширину столбцов списка. Синтаксис: ColumnWidths = String, String – строка, устанавливающая ширину столбцов. В следующем примере устанавливается ширина каждого из трех столбцов списка: With ListBox1 . ColumnCount = 3 . ColumnWidths = "20;30;30" End With |
ColumnHeads | Допустимые значения: True (выводятся заголовки столбцов раскрывающегося списка) и False (в противном случае) |
ListStyle | Устанавливает способ выделения выбранных элементов. Допустимые значения: - fmListStylePlain (выбранный элемент из списка выделяется цветом); - fmListStyleOption (перед каждым элементом в списке располагается флажок и выбор элемента из списка соответствует установке этого флажка) |
MatchEntry | Выводит первый подходящий элемент из списка при наборе его имени на клавиатуре. Допустимые значения: - fmMatchEntryNone (режим вывода подходящего элемента в списке отключен); - fmMatchEntryFirstLetter (выводит подходящий элемент по набранной первой букве. В этом случае, предпочтительно, чтобы элементы списка были бы упорядочены в алфавитном порядке); - fmMatchEntryComplete (выводит подходящий элемент по полному набранному имени) |
BoundColumn | Устанавливает тип, возвращаемый свойством Value. А именно, если свойство BoundColumn равно 0, то свойство Value возвращает индекс выбранной строки, т. е. в этом случае оно действует как свойство ListIndex. Если свойство BoundColumn принимает значение из диапазона от 1 до количества столбцов в списке, то свойство Value возвращает элемент из выбранной строки, стоящий в столбце, определенном свойством BoundColumn |
Наиболее часто используемые методы элемента управления ListBox приведены в таблице 4.7.
Таблица 4.7 – Методы элемента управления ListBox
Метод | Описание |
Clear | Удаляет все элементы из списка |
RemoveItem | Удаляет из списка элемент с указанным номером. Синтаксис: RemoveItem (index), где index – номер удаляемого из списка элемента |
AddItem | Добавляет элемент в список. Синтаксис: AddItem ([ Item [, varIndex]]), где Item – элемент (строковое выражение), добавляемый в список varIndex – номер добавляемого элемента |
Для заполнения списка можно воспользоваться одним из следующих способов:
1) Поэлементно, если список состоит из одной колонки.
With ListBox1
.AddItem "Июнь"
.AddItem "Июль"
.AddItem "Август"
End With
2) Массивом, если список состоит из одной колонки.
With ListBox1
.List = Array("Июнь", "Июль", "Август")
End With
3) Из диапазона, в который предварительно введены элементы списка.Результат выбора (индекс выбранной строки) выводится в ячейку С1:
With ListBox1
.ColumnCount=2
.RowSource="A1:B4"
.ContrSource="C1"
.BoundColumn=0
End With
4) Поэлементно, если список состоит из нескольких колонок, например двух.
ListBox1.ColumnCount =2
ListBox1.AddItem
ListBox1.List(i, 0) = XX(i)
ListBox1.List(i, 1) = Y(i)
2. Пример создания приложения с обработкой выбранных в списке значений
Пример 5.2. Создадим приложение, которое обрабатывает список значений и позволяет подсчитать сумму, произведение, минимальное или максимальное значения, среди выбранных в списке элементов. Проектируемая пользовательская форма, представлена на рисунке 4.7.
Рисунок 4.7 – Пользовательская форма для работы со списком значений
Опишем назначение и принцип взаимодействия элементов управления на представленной форме:
- ListBox(список) – список значений из целых чисел, которые можно выделять. На основе выделенных значений и выбранных переключателей формируется ответ;
- CommandButton1(кнопка)– кнопка с надписью “ Заполнить ”. Нажатие на эту кнопку запускает процедуру обработки события (Private Sub CommandButton1_Click()), которая должна заполнить список случайными целыми числами в интервале от 1 до 100;
- CommandButton2(кнопка)– кнопка с надписью “ Очистить ”. Нажатие на эту кнопку запускает процедуру обработки события (Private Sub CommandButton2_Click()), которая должна очистить список, что можно реализовать, используя метод ListBox1.Clear;
- CommandButton3(кнопка)– кнопка с надписью “ Выполнить ”. Нажатие на эту кнопку запускает процедуру обработки события (Private Sub CommandButton3_Click()), которая выполняет заполнение поле TextBox1 с пояснением “ Ответ:” в зависимости выбранного переклю-чателя: OptionButton1, OptionButton2, OptionButton3, Option-Button4;
- CommandButton4(кнопка)– кнопка с надписью “ Выход ”. Нажатие на кнопку прячет форму;
- TextBox1(поле) с пояснением “ Ответ:”. В это поле будет выводиться результат. Поле должно быть недоступным для пользователя, т. е. пользователь не сможет ни ввести, ни скорректировать данные в нем;
- Label1(надпись) – пояснительная надпись для поля вывода ответа;
- Frame1 (рамка) Используется для группировки переключателей
- OptionButton1(переключатель) с надписью “Количество выбранных элементов”;
- OptionButton2(переключатель) с надписью “Среднее значение”;
- OptionButton3(переключатель) с надписью “Минимальное значение”;
- OptionButton4(переключатель) с надписью “Максимальное значение”;
На основе созданной в конструкторе формы, необходимо набрать для данной формы программный код, представленный ниже.
Процедура заполнения списка при нажатии на кнопку “ Заполнить ”:
Private Sub CommandButton1_Click()
Randomize
For i = 0 To N - 1
‘генерация массива случайных чисел
A(i) = Rnd * 100 + 1
'добавление элемента массива в список
ListBox1.AddItem (A(i))
Next i