Использование функции в качестве источника строк
Несколько слов о третьем типе источника строк списка. Эта функция должна иметь такой список аргументов:
Function Имя_функции(fid As Control, id As Variant, _
row As Variant, col As Variant, code As Variant) As Variant
Данная функция вызывается Access каждый раз, когда требуется заполнение списка элементами. Например, это происходит автоматически, когда форма, содержащая список, открывается в первый раз. Вызвать обновление содержимого списка в какой-то другой момент можно программно, с помощью метода обновления содержимого элемента управления Require. Каждый раз при обновлении содержимого списка эта функция вызывается неоднократно: с различным "кодом действия".
Поясним значения ее аргументов и возвращаемого значения.
code — "код действия", определяет, какое действие должна выполнить функция при данном вызове. Это могут быть следующие действия: инициализация списка, его открытие, получение количества строк, количества столбцов, ширины столбцов, самих элементов списка и завершение работы. Всем этим действиям соответствуют зарезервированные константы VBA.
fid — ссылка на элемент управления
Список или Поле со списком,
который заполняется элементами, с помощью данной функции.
id — уникальный идентификатор заполняемого элемента управления. Этот аргумент полезен, когда такая функция используется для заполнения нескольких элементов управления, чтобы их различить.
row — текущий номер строки для заполняемого элемента списка (начиная с 0).
col — текущий номер столбца для заполняемого элемента списка (начиная с 0).
Возвращаемое значение и его тип зависят от текущего "кода действия", переданного в функцию. Например, для кода acLBGetValue (получить данные) это должно быть строковое значение элемента списка в заданной строке row и столбце col.
Все значения аргументов формируются и передаются в функцию самим 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.
CompEbook.ru Железо, дизайн, обучение и другие