Элемент
управления Список
Элемент управления
Список
(ListBox) используется для представления на экране поля, возможные
значения которого ограничиваются списком, причем списком недлинным. Это связано
с тем, что такой список занимает много места на экране (рис. 9.14). И хотя можно
использовать полосы прокрутки, чтобы посмотреть значения, которые не помещаются
в выделенную область, очевидно, что для отображения длинных списков этот элемент
управления не подходит.
Список может
состоять из одного или нескольких столбцов, однако при выборе элемента списка
в связанное с ним поле таблицы передается только одно значение, например в приведенных
на рис. 9.14 списках это "КодТипа" (CategoryID) и "КодСотрудника"
(EmployeeID), которые в списках даже не отображаются. Внешний вид списка и его
содержимое определяются его свойствами, которые можно задать вручную, а можно
воспользоваться мастером при размещении списка в форме, который, запросив нужную
информацию, определит большую часть свойств автоматически. Создание списка с
помощью мастера уже демонстрировалось в первой части книги. Мастер списков очень
похож на Мастера, с помощью которого создаётся элемент
Поле со списком
(см.
разд. "Создание и удаление элементов управления" гл. 5).
Для того
чтобы список правильно работал, нужно корректно определить его важнейшие свойства
— это первые восемь свойств на рис. 9.15. Соответственно, если он работает неправильно,
именно эти свойства нужно проверять в первую очередь.
Рис. 9.14.
Элементы управления
Список
Рис. 9.15.
Свойства элемента управления
Список
Чтобы элементы в данном
списке были отсортированы в алфавитном порядке по полю "Категория",
в конец инструкции SQL нужно дабавить предложение: ORDER BY Типы.Категория
(ORDER BY Categories.CategoryName).
Замечание
Значением этого свойства может быть также название таблицы или запроса. Список, базирующийся на таблице или сохраненном запросе, будет работать быстрее, чем список, у которого источник строк задан в виде инструкции SQL.
Кроме рассмотренного,
существуют еще три типа источников строк для элемента управления
Список
(ListBox):
понедельник;вторник;среда;четверг;пятница;суббота;воскресенье
Если элементы списка
содержат пробелы, включите их в кавычки. Чтобы все дни недели отобразились
в одном столбце списка, установите значение свойства
Число столбцов
равным
1, а свойству
Ширина столбцов
присвойте любое ненулевое значение,
например 2, 5см (2, 5cm).
Если нужно вывести
два столбца значений, то в свойстве
Источник строк
в перечислении
значений задаются последовательно пары значений, число столбцов устанавливается
равным 2, а в свойстве
Ширина столбцов
задается пара значении, например
2, 5см; Зсм (2, 5cm; 3cm).
Рис. 9.16.
Использование функции в качестве источника строк
Несколько
слов о третьем типе источника строк списка. Эта функция должна иметь такой список
аргументов:
Function
Имя_функции(fid As Control, id As Variant, _
row
As Variant, col As Variant, code As Variant) As Variant
Данная функция
вызывается Access каждый раз, когда требуется заполнение списка элементами.
Например, это происходит автоматически, когда форма, содержащая список, открывается
в первый раз. Вызвать обновление содержимого списка в какой-то другой момент
можно программно, с помощью метода обновления содержимого элемента управления
Require. Каждый раз при обновлении содержимого списка эта функция вызывается
неоднократно: с различным "кодом действия".
Поясним значения
ее аргументов и возвращаемого значения.
Все значения
аргументов формируются и передаются в функцию самим Access. Разработчику только
остается их обработать.
О создании
функции, выполняющей роль источника данных для списка или поля со списком, можно
получить подробную информацию в справочной системе Access 2002, в разд. "Справка
по Microsoft Access, Программирование на Visual Basic, Справочник по Visual
Basic для Microsoft Access, Свойства, Q-R, RowSourceType" (Microsoft Access
Help, Programming in Visual Basic, Microsoft Access Visual Basic Reference,
Properties, Q-R, RowSourceType Property). Пример использования такой функции
можно найти также на компакт-диске, являющемся дополнительным приложением к
данной книге, который продается отдельно.
Свойство
Присоединенный
столбец
(Bound Column), определяющее тот столбец списка, значение которого
при выборе становится значением элемента управления, может иметь значение 0.
В этом случае значением элемента
Список
(List Box) станет индекс (номер)
выбранного элемента в списке.
Элемент управления
Список
интересен еще и тем, что он позволяет делать множественный выбор
в списке, т. е. в нем можно выбрать одновременно несколько элементов, чего не
позволяет делать элемент
Поле со списком
(Combo Box). Такая возможность
требуется довольно часто, когда задаются критерии отбора записей. Например,
в базе данных объектов недвижимости надо найти интересующие клиента квартиры,
а его интересуют квартиры в определенных районах города. Можно, конечно, выбирать
в списке по очереди сначала один район, чтобы выбрать все квартиры в данном
районе, потом другой и т. д. Однако удобнее в этом случае использовать для указания
интересующих районов список, в котором выбираются сразу все интересующие районы,
а потом формируется соответствующий запрос к базе данных.
Определить, как пользователь будет выбирать значения из списка, можно с помощью свойства Несвязное выделение (Multi Select). Его можно найти на вкладке Другие (Other) окна свойств. По умолчанию это свойство имеет значение Отсутствует (None). В этом случае разрешается ныбор только одного элемента из списка. Но это свойство может иметь значения Простой (Simple) и Со связным выбором (Extended). В первом случае разрешается множественный выбор просто щелчком мыши по нужным элементам, а во втором список работает так, как почти все списки в Windows, т. е. можно использовать клавиши <Shift> и <Ctrl> для выделения смежных и несмежных элементов. Результаты выбора хранятся в специальном массиве и могут быть использованы программами VBA.