Кнопка выбора в форме списка 1с. Добавление списка или поля со списком. Присоединение столбца списка или поля со списком

Очень часто бывает необходимо на форме дать возможность пользователю выбрать настройки на форме (перед нажатием кнопки «Выполнить все»). Когда нужно выбрать одно значение из нескольких предопределенных – часто используется выпадающий список значений 1С на форме.

Выпадающий список значений 1С на форме — добавьте на форму толстого клиента поле выбора, уточните его название. Чтобы пользователь не мог изменять список – снимите галочку «Редактирование текста» в свойствах поля выбора.

Сам список выбора добавим программно в обработчике формы «ПриОткрытии». У поля выбора есть подчиненный список значений ЭлементыФормы.ИмяПоляВыбора.СписокВыбора, а для установки значения по умолчанию, и для определения выбранного значения ЭлементыФормы.ИмяПоляВыбора.Значение:
Процедура ПриОткрытии()

ЭлементыФормы.ВыборЗначения.СписокВыбора.Очистить();
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(0, "Создать документ");
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(1, "Изменить документ");
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(2, "Удалить документ");
ЭлементыФормы.ВыборЗначения.Значение = 0;

КонецПроцедуры

Выпадающий список значений 1С на форме — в тонком клиенте на форму нужно создать реквизит формы, в котором мы будем хранить результат, например с типом строка. Перетащите его на форму.
Выпадающий список значений 1С на форме — Вариант 1)

  • Включим кнопку выбора списка
  • В свойстве «Список выбора» нажмите «…» и введите варианты
  • Результат выбора будет сохранен в выбранном реквизите


Выпадающий список значений 1С на форме — Вариант 2)

  • Включим кнопку выбора списка
  • Добавим обработчик «НачалоВыбораИзСписка»

&НаКлиенте
Процедура ВыбранноеЗначениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)

Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Добавить документ");
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Редактировать документ");
Элементы.ВыбранноеЗначение.СписокВыбора.Добавить("Удалить документ");

КонецПроцедуры

Результат аналогичный. Требуется, если список должен быть заполнен ссылками на справочники/документы, которые не являются предопределенными.

Выпадающий список значений 1С на форме — Вариант 3)

Данный вариант работает аналогично, но интерфейсно выглядит по другому.

Для каждого объекта конфигурации, в составе которого могут находится подчиненные объекты типа "Форма", при добавлении новой формы запускается Конструктор формы. Это специальный мастер, с помощью которого производится выбор типа формы и размещаются реквизиты объекта конфигурации. Несмотря на существенные различия типов объектов, для которых производится создание формы, конструкторы имеют много общего. Рассмотрим работу конструктора на примере конструктора формы справочника.

Создадим в каркасной конфигурации форму элемента справочника "Валюты".

В окне редактирования объекта справочника "Валюты" на закладке "Формы" в поле для отображения списка форм по кнопке или выбрав из контекстного меню пункт "Добавить" добавим форму. При создании новой формы объекта на экран выводится конструктор формы. Группа элементов управления "Выберите тип формы" предназначена для выбора типа формы (состав определяется видом выбранного объекта конфигурации, для которого создается форма). Выберем форму элемента справочника.


Число форм по каждому типу форм не ограничено. Если у объекта несколько форм одного типа, то одну из них можно выбрать в качестве основной. Для указания основной формы установим флажок "Назначить форму основной". Если выбрана произвольная форма, то основной реквизит не создается - форма имеет типовое поведение. При выборе формы в качестве основной создается основной реквизит и поведение формы отлично от типового. Данные отличия описываются объектами "Расширение формы".

Выбор типа формы определяет тип основного реквизита и поведение всей формы, а также возможный состав команд панели инструментов.


Важно ! Конструктор формы не включает в список те реквизиты, чей тип не имеет визуального представления (например Хранилище значений).

По кнопке "Готово" получаем форму элемента справочника "Валюты".


В дальнейшем можно изменить состав реквизитов с помощью окна " Размещение данных". Для вызова окна выберите пункт "Форма - Размещение данных" главного меню .

При создании формы в ней могут быть размещены две стандартные командные панели. Для панелей конструктор указывает в качестве источника действий значение "Форма". Источник действий в дальнейшем может быть изменен, а состав команд может быть расширен пользовательскими командами. Состав команд командных панелей определяется источником действий и типом основного реквизита формы.

После работы конструктора форм можно продолжить работу с формой. Например, разместить в ней новые страницы, дополнительные элементы управления , изменить расположение элементов относительно друг друга, распределить их по страницам и т.д.

Элементы управления

Элементы управления представляют собой отдельную группу объектов, предназначенных для отображения и редактирования данных в форме. Они могут располагаться на форме, использоваться для редактирования ячеек табличного поля, табличного документа. Также как и сама форма, элементы управления связаны с данными при помощи реквизитов формы. В зависимости от типа данных, связанных с элементом управления, он имеет различный набор свойств, методов, событий.



Список типов элементов управления и конструкций элементов можно вызвать из меню "Форма", "Вставить элемент управления". Для размещаемого элемента управления можно указать Имя, Заголовок, связать с данными, указать тип данных , указать процедуры - обработчики событий и т.д.

Связь элементов управления с данными определяет поведение самих элементов управления.

Например, если поле ввода связать с данными, имеющими тип Дата, то внешний вид поля ввода изменится: появятся символы разделителей даты и дополнительная кнопка выбора:


Элементы управления , используемые в формах 1С:Предприятия, ориентированы на выполнение бизнес-задач. Например, поле ввода может иметь ряд дополнительных кнопок: выбора из списка, выбора, очистки, регулирования и открытия. Кроме этого, у поля ввода существует режим автоотметки незаполненного (подчеркивание красным пунктиром), который позволяет выделять поля, обязательные для заполнения пользователем:


Действия, выполняемые при нажатии дополнительных кнопок поля ввода, могут быть различными, в зависимости от типа данных, которые отображаются в этом поле ; при этом кнопка выбора будет иметь разные пиктограммы.

Поскольку платформа 1С:Предприятия допускает хранение в полях базы данных различного типа, элементы управления также обеспечивают ввод и редактирование различных типов данных в одном элементе. Например, поле ввода, в которое могут быть введены данные различных типов, будет иметь следующий вид:


Специальная пиктограмма в кнопке выбора (Т) говорит о том, что для этого поля ввода еще не определен тип вводимых данных. При нажатии на эту кнопку система откроет специальное окно для выбора типа данных, которые будут содержаться в этом поле .

Появилась функция "ввод по строке". Например, в поле ввода элемента справочника, если пользователь наберет первые буквы наименования, то автоматически подставится элемент справочника, либо будет выдан список подходящих элементов справочника.


Элемент управления " Индикатор " предназначен для представления текущего состояния некоторого изменяющегося числового значения. Например, может применяться для наглядного представления выполнения процесса перебора строк таблицы значений или элементов массива. Для индикатора не предусмотрено формирование каких-либо событий, он также не может изменять связанные с ним данные.


В палитре свойств для индикатора можно установить минимальное и максимальное значения, установить флажок "Показывать проценты".

Элемент управления "Полоса регулирования" предназначен для наглядного визуального изменения числовых значений. Изменение значения связанной переменной происходит от минимального до максимального установленного значения при перемещении "движка" по самой "Полосе регулирования". Перемещение "движка" может осуществляться с помощью мыши, клавишами управления курсором и клавишами PgUp и PgDn.


Элемент управления "Командная панель" представляет собой набор кнопок, обычно с пиктограммами, для выполнения действий в текущей форме или с некоторым элементом управления, например, табличным полем.

"Командная панель" может формироваться автоматически или настраиваться разработчиком. Если в свойствах командной панели установлен флажок Автозаполнение, и указано свойство ИсточникДействий, то командная панель будет автоматически заполнена командами, характерными для данного источника.

Для каждой кнопки "Командной панели" есть свойство "Действие", которое задает одно из стандартных действий или вызывает процедуру модуля.

Если у "Командной панели" установлено свойство "Вспомогательная", то это говорит о том, что командная панель не участвует в обходе элементов формы.


Элемент управления "Панель" предназначен для создания форм, динамически меняющих состав своих элементов в зависимости от действий пользователя. "Панель" содержит одну или несколько страниц, которые могут быть представлены в виде закладок. Закладки могут располагаться сверху, снизу и сбоку панели. Управление страницами "Панели" возможно средствами встроенного языка. Можно распределить элементы управления по различным страницам "Панели" для того, чтобы в зависимости от ситуации показывать на форме только нужные элементы, а остальные - скрывать. В 1С:Предприятии 8.0 панель может располагаться в любом месте формы, а на страницу одной панели можно поместить вложенную панель.

Элемент управления " Поле выбора" позволяет выбрать одно значение из нескольких вложенных, которые обычно задаются еще на этапе разработки. Перечень возможных значений указывается в свойстве "Строки списка выбора" в палитре свойств. Программно список возможных значений поля выбора доступен через свойство СписокВыбора, представляющее собой объект типа СписокЗначений.

Элемент управления " Поле списка" предназначен для визуализации объекта данных типа СписокЗначений. Все действия по управлению списком значений (добавление значения в список, удаление значения из списка, сортировка списка и другие) выполняются только средствами встроенного языка.

Элемент управления "Флажок" применяется для тех данных, которые характеризуются состояниями "включено" и "выключено". Используются флажки, имеющие два или три состояния. От типа связанного с флажком значения зависит количество состояний флажка: флажок со значением типа Булево может иметь только два состояния ("включено", "выключено"), со значением типа Число может иметь три состояния ("включено", "выключено", не определено (затемненная галочка)).


Переключатели позволяют выбрать один вариант из нескольких, поэтому их всегда два или больше. Первый переключатель в группе должен иметь установленное свойство "первый в группе". Все переключатели данной группы должны иметь последовательный порядок обхода. Если эти условия не выполняются, то переключатели будут работать неправильно.


Табличное поле - элемент управления, позволяющий работать с различными списками, наборами записей, табличными полями, а также динамическими наборами данных ТаблицаЗначений и ДеревоЗначений. Тип значения строки табличного поля зависит от типа связанного с табличным полем значения. Это может быть список элементов справочника, список документов, табличная часть справочника или документа, таблица значений и т.д.

Есть возможность выводить в табличное поле иерархические данные в виде вложенных папок или в виде дерева.


Элемент управления "Табличное поле " состоит из собственно табличного поля, шапки, подвала и ячеек. Каждую часть элемента можно настраивать.

Свойства табличного поля можно разделить на две группы. В первую группу входят свойства табличного поля в целом, как элемента.

Вторую группу свойств табличного поля образуют свойства его составных частей.

В Конфигураторе разработчик задает перечень колонок табличного поля, но пользователь при работе может самостоятельно настроить порядок и расположение колонок для себя. Пользователь может отсортировать динамический список по реквизиту, установить произвольный отбор.

Элемент управления "ПолеКалендаря" позволяет в наглядном режиме выбирать дату. Красным квадратом выделяется текущая дата. Если поле календаря расширить, то оно автоматически отразит большее количество месяцев.


Поле текстового документа - предназначено для размещения текстового редактора в форме. Элементы этого типа не связываются с объектами конфигурации.

Разделитель предназначен для организации и управления областями формы. Может перераспределять внутреннее пространство формы, изменяя размеры расположенных в ней элементов управления, привязанных к разделителю. Данный элемент не имеет свойства " Тип данных " и не связан с другими объектами конфигурации.

Элемент управления " Поле HTML-документа" предоставляет возможность показа HTML-документа, навигации и редактирования. Режим использования выбирается в свойстве Режим. Если используется режим "Просмотр", то для командной панели, для которой источником действий выступает данное поле , с установленным свойством Автозаполнение, будет определен набор кнопок навигации. Также возможно добавление кнопки Остановить.

Для использования данное поле необходимо настроить (например, в процедуре инициализации указать URL ресурса, разместить в форме командную панель, связанную с данным элементом и т.д.).

Если используется режим "Редактирование", то в режиме "1С:Предприятие" в данном поле допускается редактирование HTML-документа.

Кнопка - элемент управления, предназначенный для запуска определённой процедуры-обработчика. Кнопка может содержать картинку: . При добавлении кнопки, автоматически будет создана процедура, активизирующаяся при нажатии кнопки. Свойство "Режим меню " позволяет усложнить кнопку до выпадающего меню при установке "Использовать", если установлено "Использовать дополнительно", то кнопка будет разделена на две: . Действия программы при нажатии данной кнопки определяется на этапе конфигурирования. Состав действий при нажатии зависит от свойства "Источник действий".

Элемент управления " Поле картинки" предназначен для размещения в форме различных картинок. Механизм ссылок позволяет связать с полем картинки некоторые действия, выполняемые при нажатии на нее. Допускается использование "анимированных" типов картинок.

В надписях, полях ввода и других элементах управления можно разместить картинки.

Кнопки, картинки и надписи могут служить гиперссылками. В этом режиме они реагируют на одинарный щелчок мыши (возникает событие Нажатие).

Предопределенные процедуры версии 7.7 теперь называются процедурами-обработчиками событий и в общем случае могут иметь имена, отличающиеся от имен событий. Это относится ко всем процедурам-обработчикам, кроме расположенных в модулях объектов и модулях приложения. Назначение обработчика для события производится в свойствах формы или элемента управления.


Ключевые слова: подбор, ОбработкаПодбора, ОбработкаВыбора, МножественныйВыбор, ЗакрыватьПриВыборе, ОповеститьОВыборе

1. Простой подбор

В форме размещаем кнопку "Подбор". Это может быть кнопка панели инструментов или отдельно стоящая кнопка.

В обработчике события Нажатие для кнопки пишем:

Процедура кпТоварыПодбор(Кнопка) ФормаПодбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,ЭтаФорма); ФормаПодбора.ЗакрыватьПриВыборе = Ложь ; ФормаПодбора.Открыть(); КонецПроцедуры

При этом происходят довольно интересные вещи:

1. В первой строке получаем форму выбора. Это особая форма, которая может не совпадать с формой списка (а может совпадать). Форму выбора можно создать самому, или она будет сгенерирована системой автоматически, или форма списка может работать в режиме выбора.

Если вы получили не форму подбора, а обычную форму (методом ПолучитьФорму или ПолучитьФормуСписка), то по умолчанию у нее не установлено свойство РежимВыбора. Нужно или установить это свойство в Истина, или оповещать о выборе элемента самостоятельно (см. метод формы ОповеститьОВыборе).

а) Первым параметром можно передать имя формы или объект описания метаданных типа формы. Если у объекта несколько форм выбора, то здесь можно указать, какую форму нужно использовать.

б) Вторым параметр указывается владелец формы - форма или элемент управления, из которого производится вызов формы выбора. После совершения выбора именно владельцу формы будет послано оповещение о выборе, которое инициирует событие "ОбработкаВыбора" (у формы или элемента формы).

в) Третьим параметром можно указать ключ уникальности для поиска среди уже открытых форм. Если форма с таким ключом уникальности будет найдена, то будет возвращена именно она. Это удобно, если не нужно открывать новых форм выбора.

2. Вторая строка устанавливает режим, при котором после выбора значения форма не будет закрываться, т.е. это и и есть основная функция подбора. При множественном выборе это свойство имеет смысл установить в Истина, но об этом ниже. Здесь же можно присвоить и другие свойства открываемой формы, например, расположение на экране, задать значения реквизитов формы или экспортных переменных модуля формы.

3. Третья строка открывает форму выбора. После первой строки форма еще не была открыта, но ее модуль уже был скомпилирован и инициализирован.

В свойствах формы должен быть назначен обработчик события "ОбработкаВыбора".

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) Если ТипЗнч(ЗначениеВыбора) = Тип("") Тогда Строка = Товары.Найти(ЗначениеВыбора,"Номенклатура "); Если Строка = Неопределено Тогда Строка = Товары.Добавить(); Строка .Товар = Товар; Строка .Количество = 1 ; Иначе Если Вопрос ("Такой товар уже есть (" + СокрЛП (Товар) + ")! Увеличить кол-во? ", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда Строка .Количество = Строка .Количество + 1 ; КонецЕсли ; КонецЕсли ; КонецПроцедуры

2. Множественный выбор

При таком выборе пользователь может выделить сразу несколько элементов (например, с помощью клавиши Ctrl) и после нажатия кнопки "Выбрать" система вернет массив выбранных элементов, а не один элемент, как в первом случае.

Процедура кпТоварыПодбор(Кнопка) ФормаПодбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,ЭтаФорма); ФормаПодбора.МножественныйВыбор = Истина ; ФормаПодбора.ЗакрыватьПриВыборе = Ложь ; ФормаПодбора.Открыть(); КонецПроцедуры

Тогда обработчик события ОбработкаВыбора можно написать так:

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник) МассивВыбранныхЭлементов = Новый Массив; Если ТипЗнч(ЗначениеВыбора) = Тип("СправочникСсылка.Номенклатура ") Тогда МассивВыбранныхЭлементов.Добавить(ЗначениеВыбора); ИначеЕсли ТипЗнч(ЗначениеВыбора) = Тип("Массив ") Тогда МассивВыбранныхЭлементов = ЗначениеВыбора; КонецЕсли ; Для каждого Элемент Из МассивВыбранныхЭлементов Цикл //действия с очередным элементом КонецЦикла ; КонецПроцедуры

Примечание: Для ручной генерации события выбора из формы подбора нужно использовать функцию ОповеститьОВыборе.

Вот, собственно, и все. Подбор - легкая вещь, если понимаешь, что происходит.

Элемент управления Список (ListBox) используется для представления на экране поля, возможные значения которого ограничиваются списком, причем списком недлинным. Это связано с тем, что такой список занимает много места на экране (рис. 9.14). И хотя можно использовать полосы прокрутки, чтобы посмотреть значения, которые не помещаются в выделенную область, очевидно, что для отображения длинных списков этот элемент управления не подходит.

Список может состоять из одного или нескольких столбцов, однако при выборе элемента списка в связанное с ним поле таблицы передается только одно значение, например в приведенных на рис. 9.14 списках это "КодТипа" (CategoryID) и "КодСотрудника" (EmployeeID), которые в списках даже не отображаются. Внешний вид списка и его содержимое определяются его свойствами, которые можно задать вручную, а можно воспользоваться мастером при размещении списка в форме, который, запросив нужную информацию, определит большую часть свойств автоматически. Создание списка с помощью мастера уже демонстрировалось в первой части книги. Мастер списков очень похож на Мастера, с помощью которого создаётся элемент Поле со списком (см. разд. "Создание и удаление элементов управления" гл. 5). Для того чтобы список правильно работал, нужно корректно определить его важнейшие свойства - это первые восемь свойств на рис. 9.15. Соответственно, если он работает неправильно, именно эти свойства нужно проверять в первую очередь.

Рис. 9.14. Элементы управления Список

Рис. 9.15. Свойства элемента управления Список

  • Имя (Name) - название данного элемента управления. Нужно дать ему осмысленное название, т. к. оно используется во всех ссылках на этот элемент управления в выражениях, программах и макросах.
  • Данные (Control Source) - название поля в таблице, которое будет содержать выбранное в списке значение.
  • Следующие два свойства: Тип источника строк (Row Source Type) и Источник строк - (Row Source) определяют источник данных для элементов списка. В приведенном примере в качестве источника данных используется таблица "Типы" (Categories), поэтому в свойстве Тип источника строк (Row Source Type) выбрано значение Таблица или запрос (Table/Query), а в качестве значения свойства Источник строк (Row Source) указана инструкция SQL, которая выбирает нужные данные из таблицы (поля "КодТипа" и "Катерогия"): SELECT Типы.КодТипа, Типы.Категория FROM Типы; для английской версии Access: SELECT Categories.CategorylD, Categories.CategoryName FROM Categories;
  • Чтобы элементы в данном списке были отсортированы в алфавитном порядке по полю "Категория", в конец инструкции SQL нужно дабавить предложение: ORDER BY Типы.Категория (ORDER BY Categories.CategoryName).

Замечание

Значением этого свойства может быть также название таблицы или запроса. Список, базирующийся на таблице или сохраненном запросе, будет работать быстрее, чем список, у которого источник строк задан в виде инструкции SQL.

  • Свойство Число столбцов (Column Count) имеет значение 2, т. е. в списке будет два столбца (выбираются два поля), однако свойство Ширина столбцов (Column Width) определяет ширину первого столбца, равной 0, т. е. он не будет отображаться на экране.
  • Несмотря на то, что первый столбец является скрытым, его тоже можно присоединить к полю таблицы, как и любой другой столбец списка, чтобы в выбранном элементе списка значение именно из этого столбца (в нашем примере - это значение поля "КодТипа") записывалось в базовую таблицу формы. Чаще всего именно первый слобец списка требуется присоединить к полю источника данных. Номер присоединенного столбца указывается в свойстве Присоединенный столбец (Bound Column).
  • Свойство Заглавия столбцов (Column Heads) в нашем примере имеет значение Нет (No), поэтому они не будут отображаться в списке.

Кроме рассмотренного, существуют еще три типа источников строк для элемента управления Список (ListBox):

  1. Список значений. Если количество строк в списке невелико и постоянно, можно все значения задать прямо в окне свойств элемента. В этом случае в свойстве Тип источника строк выбирается значение Список значений (Value List), а значения элементов списка перечисляются через точку с запятой без пробелов в свойстве Источник строк. Например:

    понедельник;вторник;среда;четверг;пятница;суббота;воскресенье

    Если элементы списка содержат пробелы, включите их в кавычки. Чтобы все дни недели отобразились в одном столбце списка, установите значение свойства Число столбцов равным 1, а свойству Ширина столбцов присвойте любое ненулевое значение, например 2, 5см (2, 5cm).

    Если нужно вывести два столбца значений, то в свойстве Источник строк в перечислении значений задаются последовательно пары значений, число столбцов устанавливается равным 2, а в свойстве Ширина столбцов задается пара значении, например 2, 5см; Зсм (2, 5cm; 3cm).

  2. Список полей. Этот тип источника строк (значение Список полей (Filed List) свойства Тип источника строк) предназначен для вывода в списке имен полей таблицы или.запроса. Имя таблицы или запроса задается в свойстве Источник строк. Таким способом в списке можно отобразить имена полей таблиц, чтобы предоставить возможность их выбора.
  3. Определяемая пользователем функция. Наконец, источником строк для списка может быть функция, написанная на языке VBA, которая заполнит список значениями. В этом случае свойство Тип источника строк нужно установить, как это показано на рис. 9.16, т. е. указать имя функции без знака равенства (=) и без скобок, а свойство Источник строк должно остаться пустым. Использовать определяемую пользователем функцию полезно, когда требуется заполнить список вычисленными значениями или когда содержимое списка должно динамически меняться в зависимости от содержимого других элементов управления. В первом случае вычисления могут проводиться даже над данными, которых нет в базе (например, когда нужно вычислить определенные даты, начиная с текущей) Второй вариант окажется подходящим, например, если при выборе категории товаров в одном списке, в другом должен отображаться набор товаров именно этой категории.

Рис. 9.16.

Несколько слов о третьем типе источника строк списка. Эта функция должна иметь такой список аргументов:

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, т. е. можно использовать клавиши и для выделения смежных и несмежных элементов. Результаты выбора хранятся в специальном массиве и могут быть использованы программами VBA.

При вводе информации в формы баз данных классического приложения Access быстрее и легче выбирать значение из списка, чем вводить его по памяти. Кроме того, благодаря использованию списка вариантов в поле будут вводиться только допустимые значения. Список может быть подключен к существующим данным или содержать фиксированные значения, указанные при его создании. В данной статье описаны списки, доступные в формах программы Access, а также способы их создания и настройки.

В этой статье

Типы списков

Программой Access предусмотрены два типа элементов управления "Список": список и поле со списком.

Данный элемент управления отображает список значений или вариантов. Список содержит строки данных и обычно имеет такой размер, чтобы всегда были видны несколько строк. Строки могут содержать один или несколько столбцов с заголовками или без них. Если список содержит больше строк, чем может быть отображено в элементе управления, появится полоса прокрутки. Выбор ограничен вариантами, представленными в списке; ввести значение в список невозможно.

Поле со списком. Данный элемент управления является более компактным способом отображения списка вариантов: список скрыт до тех пор, пока пользователь не нажмет кнопку раскрытия списка. Кроме того, поле со списком позволяет вводить значения, не содержащиеся в списке. Таким образом, этот элемент управления объединяет в себе функции текстового поля и списка.

1. Нажмите стрелку, чтобы отобразить раскрывающийся список.

2. Выберите необходимый вариант из раскрывающегося списка.

Списки или поля со списками могут быть связанными и свободными элементами управления. Эти элементы управления могут содержать значения из фиксированного списка, который вводится пользователем, либо из таблицы или запроса. Создать связанный список или поле со списком, в который подставляются значения из таблицы или запроса, можно только в том случае, если основой для формы служит источник записей, содержащий поле внешний ключ или поле подстановки. Это позволяет создавать отношения, необходимые для связывания данных в списке или в поле со списком с данными в форме.

Создание списка или поля со списком с помощью мастера

Создание списка или поля со списком путем добавления поля подстановок в форму

Связанные списки или поля со списком можно создавать путем добавления поля подстановок в форму.

Создание списка или поля со списком без использования мастера

При создании списка или поля со списком без использования мастера необходимо вручную задать ряд свойств элемента управления. Для получения дополнительных сведений об определенном свойстве нажмите это свойство, а затем - клавишу F1.

Задача

Значение свойства "Тип источника строк"...

Задайте следующее значение свойства "Источник строк":

Показать значения из таблицы или запроса либо результатов инструкции SQL

Таблица/запрос

В раскрывающемся списке выберите таблицу или запрос, содержащие значения, которые нужно отобразить в списке или поле со списком.

Введите инструкцию SQL.

На вкладке данные страницы свойств нажмите кнопку , чтобы открыть построитель запросов. Дополнительные сведения о создании запросов см. в статье Создание простого запроса на выборку .

Показать фиксированный список значений

Список значений

Введите список фиксированных значений, разделяя их точкой с запятой (; ). Например, Север; Нижний Поддержки Запад

На вкладке данные страницы свойств нажмите кнопку , чтобы открыть диалоговое окно изменение элементов списка , а затем введите элементы на отдельных строках.

Показать список полей из таблицы или запроса

Список полей

В раскрывающемся списке выберите таблицу или запрос, содержащие имена полей, которые нужно отобразить в списке или поле со списком.

    Если вы хотите включить в элемент управления несколько столбцов, перейдите к ячейке свойства Число столбцов и введите их число. Задайте ширину столбцов с помощью свойства Ширина столбцов . Чтобы получить дополнительные сведения о каждом свойстве установите курсор в поле этого свойства и нажмите клавишу F1.

    Если вы хотите, чтобы программа Access сохранила выбранное значение, нажмите поле свойства Данные и укажите поле, к которому нужно присоединить список или поле со списком.

Настройка списка или поля со списком

В форме, открытой в режиме конструктора, выделите список или поле со списком и нажмите клавишу F4, чтобы открыть страницу свойств элемента управления. Затем выполните одно из указанных ниже действий.

    Изменение порядка сортировки в списке или в поле со списком. Если для создания списка или поля со списком использовался мастер, программа Access автоматически сортирует строки, составляющие список, по первому видимому столбцу. Если требуется задать другой порядок сортировки или если в свойстве Источник строк элемента управления был выбран сохраненный запрос, используйте следующую процедуру.

    Присоединение столбца списка или поля со списком

    В поле свойства Присоединенный столбец списка или поля со списком укажите число, соответствующее номеру столбца списка или поля со списком. Например, введите 1 , чтобы присоединить первый столбец списка или поля со списком к базовому полю, заданному в свойстве Данные . При определении номера столбца необходимо учитывать скрытые столбцы.

    Если для свойства Присоединенный столбец задано значение "0", программа Access будет сохранять индекс списка, а не значения одного из столбцов. Это удобно, если нужно вместо значений списка сохранить последовательность чисел.

    Скрытие столбца в списке или в поле со списком в форме

    • В поле свойства Ширина столбцов введите значение 0 для столбцов, которые нужно скрыть.

      Предположим, что у вас есть присоединенное поле со списком из двух столбцов: "КодПоставщика" шириной 1 см и "ИмяПоставщика" шириной 5 см. Столбец "КодПоставщика" - первый столбец списка, поэтому для свойства Ширина столбцов задано значение 1см;5см . Чтобы скрыть столбец "КодПоставщика", установите для свойства Ширина столбцов значение 0см;5см . Столбец "КодПоставщика" остается присоединенным, несмотря на то, что он скрыт.

      Примечание: Если список не раскрыт, в поле со списком отображается первый видимый столбец списка. Например, в предыдущем примере будет отображаться столбец "ИмяПоставщика", поскольку столбец "КодПоставщика" скрыт. Если бы он не был скрытым, в поле отображались бы значения из этого столбца, а не столбца "ИмяПоставщика".

    Добавление заголовков столбцов в поле со списком в форме

    • Чтобы отобразить заголовки столбцов, задайте для свойства Заголовки столбцов значение Да . В полях со списком заголовки списка отображаются только при его раскрытии.

      Если поле со списком или список созданы на основе источника записей, программа Access будет использовать имена полей этого источника записей в качестве заголовков столбцов. Если поле со списком или список созданы на основе списка фиксированных значений, то в качестве заголовков столбцов программа Access будет использовать первые n элементов списка значений (заданных в свойстве Источник строк), где n равно значению свойства Число столбцов .

    Отключение автозавершения при вводе для поля со списком в форме

    • В поле свойства Автоподстановка задайте значение Нет .

      В этом случае нужно будет выбирать значение из списка или вводить его целиком.

    Настройка ширины списка для поля со списком в форме

    • Введите в поле свойства Ширина списка значение ширины в текущих единицах измерения (заданных в панели управления Windows). Чтобы использовать единицы измерения, отличные от принятых по умолчанию, введите обозначение единиц измерения. Например, введите значение 2 см . Убедитесь, что оставлено достаточно места для полосы прокрутки.

      Список поля со списком может быть шире его текстового поля, но не может быть более узким. Значение по умолчанию (Авто ) обеспечивает одинаковую ширину текстового поля и списка.

    Настройка максимального числа строк, отображаемых в поле со списком в форме

    • Введите число в поле свойства Число строк списка .

      Если фактическое количество строк списка превышает значение, указанное в свойстве Число строк списка , при раскрытии списка отображается вертикальная полоса прокрутки.

    Ограничение значений поля со списком элементами, присутствующими в списке в форме

    • В поле свойства Ограничиться списком выберите значение Да .

      Примечания:

      • Если первый столбец, отображаемый в поле со списком, не является присоединенным, нельзя вводить в поле значения, отсутствующие в списке, даже если для свойства Ограничиться списком задано значение Нет .

        Если для свойства Ограничиться списком задано значение Нет , то при вводе в присоединенное поле со списком значения, которого нет в списке, это значение заносится в базовое поле, но не добавляется в список. Чтобы добавить в список элементы, используйте свойство Отсутствие в списке и событие Нет в списке .

Операционные системы