Элемент ListBox предоставляют пользователю
выбрать значение из списка данных. Отдельные
пункты элемента ListBox выбираются с помощью мыши.
Добавлять пункты в элемент ListBox можно с помощью
программного кода, либо устанавливая значение
свойство List в окне свойств. Каждый пункт следует
вводить отдельной строкой, нажимая комбинацию
клавиш Ctrl + Enter. Завершив ввод пунктов, нажмите
клавишу Enter, и они отобразятся в элементе ListBox на
форме.В этой статье будут рассмотрены свойства и
методы элемента ListBox.
Основные свойства
Некоторые свойства элементов ListBox можно
установить только в режиме проектирования.
Именно они определяют функциональные
возможности элемента, которые нельзя изменять во
время работы приложения.
Свойство MultiSelect
Определяет метод выборки пунктов списка. Его
значение задается при конструировании. Во время
работы приложения значение свойства доступно
только для чтения. Значение свойства MultiSelect
определяет, может ли пользователь выбрать
несколько пунктов списка и метод выборки.
Значение - Описание
0 - Выбор нескольких пунктов запрещен (по
умолчанию)
1 - Простой выбор нескольких пунктов. Щелчок
кнопкой мыши (или нажатие клавиши пробела)
выбирает или отменяет пункт списка. Для
перемещения фокуса на другой пункт используйте
клавиши со стрелкой
2 - Расширенный выбор нескольких пунктов. Для
выбора нескольких пунктов подряд нажмите
клавишу Shift, а затем щелкайте на пунктах мышью
(или нажимайте клавиши со стрелкой). Все пункты
списка между ранее выбранным и текущим пунктами
подсветятся. Чтобы выбрать произвольно
расположенные элементы списка (или отменить
выбор), нажмите клавишу Ctrl и щелкните на пункте
кнопкой мыши
Свойство Sorted
С помощью приложения в списки элементов ListBox
можно вставлять новые пункты, но программист
тоже должен позаботиться об этом. Если
необходимо, чтобы пункты всегда были
отсортированы, установите значение свойства Sorted
равным True. Сделать это можно только во время
проектирования: во время выполнения оно доступно
только для чтения. Элемент ListBox является
текстовым элементом, т. е. сортировать числовые
данные он не может. Чтобы использовать элемент
ListBox для сортировки чисел, прежде всего,
отформатируйте их, добавив нули в начале каждого
числа. Так, число 10 всегда будет отображаться
перед числом 5, поскольку строка "10" меньше
строки "5" (она начинается с единицы). Если же
числа форматировать как "010" и "005", то
сортировка будет корректна. Пункты в элементе
ListBox сортируются по возрастанию с учетом
регистра. Более того, стандартные установки
изменить невозможно. Элементы "aa", "aA",
"AA, "Aa", "Ba" и "BA" сортируются
следующим образом. "AA" "Aa" "aA"
"aa" "BA "Ba" Как видите, символы
верхнего регистра появляются впереди тех же
символов нижнего. Все слова, начинающиеся с буквы
В, появляются после слов, начинающихся с А, но
перед словами, начинающимися с буквы С. В
пределах группы слов, начинающихся с буквы В,
сначала отображаются слова, начинающихся с буквы
В, а вслед за ними идут слова, начинающиеся с
буквы b.
Свойство Style
Определяет внешний вид элемента. Имеет два
значения: 1 - Standard и 2 — Checkbox. Обратите внимание:
левый список не отсортирован, а правый —
отсортирован.
Методы элемента ListBox
Для управления элементом ListBox из приложения
необходимо иметь возможность:
• добавлять пункты в список;
• удалять пункты из списка;
• выбирать отдельные пункты списка.
Метод Additem
Чтобы добавлять пункты в список,
используется метод Additem. Он имеет следующий
синтаксис:
List1.Additem item, index
Параметр item - это строка, добавляемая в список, a
index - ее порядковый номер. Порядковый номер
первого элемента списка равен нулю. Аргумент index
необязателен. Если его опустить, строка
добавляется в конец списка. Если значение
свойства Sorted элемента установлено равным True, то
пункт вставляется в соответствующее место
списка, независимо от значения аргумента index.
Метод RemoveItem
Чтобы удалить пункт из списка, найдите его
положение (index) в списке: index необходим методу
RemoveItem.
List1.Removeltem Index
Параметр index указывает на порядковый номер
удаляемого пункта и является обязательным.
Следующий оператор удаляет пункт из начала
списка. List1.Removeltem ()
Метод Clear
Удаляет из списка элемента все пункты.
Синтаксис метода несложен. List1.Clear Чтобы получить
доступ к отдельным пунктам, можно использовать
несколько свойств элемента ListBox. Для удаления
пункта из списка необходимо знать его порядковый
номер, но в данном случае этот аргумент метода
RemoveItem используется редко. Как правило, удаляемый
пункт выбирает пользователь либо удаляемые
пункты выбирают из программного кода по их
значениям. Некоторые свойства элемента ListBox
позволяют считывать пункты из программного кода
(эти свойства рассматриваются).
Другие свойства
Свойство ListCount
Возвращает число пунктов списка. Доступ к ним
можно получить с помощью значений индексов в
диапазоне от 0 до ListCount-1.
Свойство List()
Это массив пунктов списка. Элемент массива List(0)
содержит первый пункт списка, элемент List(1) -
второй и т.д., вплоть до последнего элемента -
List(ListCount-1), содержащего последний пункт списка.
Массив List() часто используют для просмотра
пунктов списка. Для просмотра всех пунктов
элемента управления List1 с целью отыскания и
удаления пустых строк применяйте следующий цикл.
For item = List1.ListCount – 1 to 0 Step – 1
If List1.List(item) = "" Then
List1.RemoveItem item
End If
Next
Обратите внимание: данный цикл сканирует
элементы массива List() с конца. Понимаете, почему?
При удалении каждого пункта длина списка
уменьшается на 1. Если сканировать список с
начала, число итераций превысит число пунктов
списка, что ведет к ошибке исполнения. Если же
сканировать список с конца, эта ошибка
исключается.
Свойство ListIndex
ListIndex представляет собой индекс выбранного
пункта списка. При выборке нескольких пунктов
ListIndex представляет индекс последнего выбранного
пункта. Если не выбран ни один элемент, значение .ListIndex
= -1. Это свойство можно использовать для выбора
или удаления конкретных пунктов. Так, следующий
оператор удаляет выбранный пункт элемента List 1:
List1.RemoveItem List1.ListIndex Для выделения определенного
элемента используйте List1.ListIndex = 2 Если при вызове
метода RemoveItem ни один пункт списка не выбран,
значение свойства ListIndex отрицательно. Попытки
удалить пункт с отрицательным индексом приводят
к ошибке исполнения. Чтобы избежать этого,
проверьте значение свойства ListIndex.
If List1.ListIndex >= 0 Then
List1.RemoveItem List1.ListIndex
End If
После удаления пункта индексы последующих
пунктов соответственно перестраиваются.
Свойство Selected
Selected представляет собой массив, подобный
свойству List. Его элементы могут иметь значения True
или False в зависимости от состояния
соответствующего пункта списка. Если пункт
списка выбран, значение свойства Selected данного
пункта равно True. В противном случае значение
свойства равно False. Поскольку отсутствуют
средства, позволяющие получить сразу все индексы
при выборке нескольких пунктов, необходимо
проверить все элементы массива Selected (чуть позже
будет приведен соответствующий пример).
Свойство SelCount
Отображает число выбранных пунктов элемента
ListBox, если значение свойства MultSelect установлено
равным 1 (Simple) или 2 (Extended). Обычно это свойство
используют вместе с массивом Selected для работы с
выбранными пунктами элемента. Если элемент ListBox
допускает выборку множества пунктов,
рекомендуем применить в списке стиль Checkbox
(Флажок). Чтобы пункты списка отмечались флажками
(рис. 5.6), установите значение свойства Style равным
1.
Свойство NewIndex
Возвращает индекс последнего пункта
включенного в список элемента ListBox. Обычно это
свойство используют вместе со свойством ItemData,
который рассматривается в параграфе
"Индексирование с помощью элемента ListBox".
Индексирование с помощью элемента ListBox
Ключевым свойством элемента ListBox является
свойство ItemData — массив, подобный массиву List.
Однако вместо строк, появляющихся в элементе, он
содержит числа. Каждый пункт, отображаемый
элементом ListBox, состоите двух частей: строки
(задаваемой свойством List(i)) и числа, задаваемого
свойством ItemData(i) (здесь i — индекс пункта списка).
Свойство ItemData — это значение типа Long, которое
может сохранять числовую информацию любого типа,
относящуюся к пункту списка, но не отображаемую в
списке. Так, в массиве List() можно сохранять список
имен сотрудников, а в массиве ItemData() - данные об их
зарплате. Доступ к записям о каждом сотруднике
можно получать по имени, а зарплату отображать в
элементе TextBox, помещенном на ту же форму. Однако
истинная ценность свойства ItemData состоит не в
хранении дополнительной информации, относящейся
к пункту. Действительно, единственного числа
явно недостаточно для хранения существенной
дополнительной информации. Предположим,
необходимо поддерживать список имен и адресов.
Хранить все эти записи в элементе ListBox
непрактично: элемент должен быть слишком
широким, чтобы вместить всю строку с именем,
адресом, городом, номером телефона и т.д.
Практичнее хранить в элементе ListBox имена,
используя их как ключи для доступа к элементам
массива, в котором хранится остальная
информация. Каждая запись хранится в элементе
массива, соответствующем одному из пунктов
элемента ListBox. Если установить значение свойства
ItemData равным индексу соответствующего элемента
массива данных, то при необходимости можно
получить немедленный доступ к записям массива.
Этот подход применим и к файлам с произвольным
доступом (значение свойства ItemData равно числу
совпадающих записей).
|