Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012) (1084448), страница 29
Текст из файла (страница 29)
выделение в списке производится аналогично выделению файлов и папок вправой части ПроводникаКоличествостолбцов(Со1итпСошй)Определяет число столбцов списка, отображаемыхна экране. Если источником строк для списка являются таблица или запрос, то поля источника данных отображаются в направлении справа налево.Максимальное число столбцов определяется числомполей в таблице или запросеЗаглавиястолбцов(СсЯитпНеаск)Определяет, выводятся ли заголовки столбцов списка (поля со списком) путем задания значений Да(True) или Нет (False).
Заглавия столбцов выводятся как их первые строчки. Содержимое заглавия зависит от значения свойства Тип (Туре) источникастрок. Если в качестве источника строк используются таблица или запрос, то заголовки столбцов определяются как имена соответствующих столбцовШирина списка(ListWidth)Определяет ширину списка. Значение задается всантиметрахКоличество строк Определяет число строк списка. Значение данного(LislRows)свойства находится в диапазоне от 1 до 255Цвет текста(РогеСо1ог)Цвет фона(ВаскСо1ог)150Определяет цвет шрифта списка.
Значение данногосвойства представляет собой числовое выражение,которое можно задать в окне свойств с помощьюдиалогового окна Цвет (Color Builder),вызываемого кнопкой [Построить] (Build)Определяет цвет фона списка. Значение данногосвойства представляет собой числовое выражениеОкончание табл. 3.15СвойствоОграничитьсясписком(ЫтИТоЬМ)Шрифт(РогЛЫате)Размер шрифта(РоШ&ге)ОписаниеОпределяет вывод в поле со списком только значений, содержащихся в списке, путем установки значений Да (True) или Нет (False)Определяет шрифт текста в списке.
Значением данного свойства является строка, представляющая собой имя шрифтаОпределяет размер шрифта в списке. Значения данного свойства представляют собой целые числа вдиапазоне от 1 до 127Курсив (РопШаИс) Позволяет задать наклонный стиль шрифта элементауправления путем установки значений Да (True)или Нет (False)ПодчеркнутыйПозволяет задать подчеркнутый стиль шрифта эле(FontUndeгline)мента управления путем установки значений Да(True) или Нет (False)НасыщенностьОпределяет ширину линии, используемой для ото(Рсий\¥е1£М)бражения символов элемента управления на экранеи при печати, посредством задания следующих вариантов свойства:100 — Тонкий (Thin);200 — Сверхсветлый (ExtraLight);300 — Светлый (Light);400 — Обычный (Normal);500 — Средний (Medium);600 — Плотный (Semi-Bold);700 — Полужирный (Bold);800 — Жирный (ExtraBold);900 — Сверхжирный (Heavy)Кнопка (Button) помимо свойств, присущих всем элементамуправления, имеет и некоторые специфичные свойства, представленные в табл.
3.16.Т а б л и ц а 3.16Свойства кнопкиСвойствоПрозрачный(Transparent)Автоматическийповтор(AutoRepeat)ОписаниеОпределяет, является кнопка видимой Нет (False)или прозрачной Да (True)Определяет путем установки значений Да (True)или Нет (False), выполняются ли повторно процедура обработки события или макрос, пока кнопкаостается нажатой151Объект C ontrol имеет пять методов: Dropdown, Requery,SetFocus, SizeToFit, Undo.Некоторые из них были рассмотрены при описании методовформ, теперь рассмотрим остальные.Метод Dropdown раскрывает содержание поля со списком. Например, этот метод можно использовать для раскрытия списка вмомент получения фокуса элементом управления.Если при вызове данного метода элемент управления не имеетфокуса, произойдет ошибка.Метод SizeToFit задает размер элемента управления в соответствии с размерами текста или изображения, которые содержатсяв этом элементе управления.
Данный метод может применятьсятолько в режиме конструктора форм. Его также можно использовать в процессе создания в программе кнопок для определения ихразмеров.Этот метод воздействует не на все элементы управления. Присоединенные элементы управления могут изменять свой размерпри переходе от записи к записи. Это справедливо для полей, списков, полей со списками и присоединенных рамок объектов.Пример 3.12. Создадим форму Товары (рис. 3.13) с отбором данных наоснове процедур обработки событий изменения полей со списками.При вводе данных пользователь будет сначала выбирать категориютовара из одного списка, а потом собственно товар из другого списка.Причем можно выбрать режим для ввода новых товаров или для изменения информации о уже существующих товарах.Сначала создадим базу данных, состоящую из двух таблиц, связанных через схему данных (рис.
3.14), а затем с помощью мастера, выбравв качестве источника записей таблицу ТОВАРЫ (Код товара, Категория, Наименование, Цена) и все поля этой таблицы, создадим форму.BÜ ТоварыЭ Я Я■Выберите категориюкомпьютернаяте:-_ 'Выберитетовар[НаименованиеЗ j j j«г и * * « « *1 l'Z. . .. .; . ..
.Категория1 НаименованиеJ.Т_ .. ‘. .|5 13........ "?- 1(Наименование!]-,‘г<• •• 1рю: ;',■';':_,.Рис. 3.13. Форма Товары152.. . ,,|Рис. 3.14. Схема данных базыПосле этого будем работать с формой в режиме конструктора форм ив первую очередь зададим в окне свойств этой формы значения некоторых свойств в соответствии с табл. 3.17.Т а б л и ц а 3.17Значения свойств формы ТоварыСвойствоОбласть выделенияЗначениеНет (False)(Record Selectors)Кнопки переходаНет (False)(Navigation Button)Режим по умолчанию(Default View)Простая форма (Single Form)Полосы прокрутки (Scroll Отсутствуют (Neither)Bars)ФильтрКод Товара = FormslToBapbi! [Выбор Товара]Применение фильтровДа (True)В заголовок формы добавим два поля со списком: Выбор категориитовара и Выбор товара, а также преобразуем поля Код товара и Кодкатегории товара в соответствующие поля со списком.В данном случае удобно создать поле со списком Выбор категориитовара с помощью мастера.
При этом в качестве источника строк необходимо выбрать таблицу Категории, которая содержит поля Код категории типа счетчик и Наименование категории текстового типа. В данную таблицу должны быть добавлены записи,!їїкак показано на рис. 3.15.2|КозВ качестве значения свойства ТипЗІПріисточника строк выберем Таблица илиЗапрос, а в качестве значения свойстваИсточник строк зададим запрос вида,показанного на рис. 3.16.Рис. 3.15.
Таблица Категории153aiB И н с т р у кц и я SQLп о с т р о и те л ь з а п р о с о вРис. 3.16. Запрос для поля со списком Выбор категории товараЗададим значения еще нескольким свойствам данного элемента управления (табл. 3.18).Т а б л и ц а 3.18Значения некоторых свойств поля со списком Выбор категории товараСвойствоЗначениеПрисоединенный стол 1.
В этом случае присоединенным будет первыйбец (Bound Column)столбец запроса, приведенного на рис. 3.16Количество столбцов 2(Column Count)Ширина столбцов(Column Widths)0 см. В данном случае задается ширина толькопервого столбца; ширина второго столбца незадается, так как она будет равна ширине спискаШирина списка (ListWidth)Авто (Auto)Остальные свойства используют значения по умолчанию.Теперь необходимо создать процедуру обработки события После обновления (АЛегИрсМе):Private Sub Выбор_категории_товара_А£terUpdate()Dim ctl As ControlSet ctl = Me![Выбор Товара]ctl.Enabled = Truectl.Requeryctl.SetFocusEnd SubВ данной процедуре объявляется переменная ctl типа Control и затемей присваивается ссылка на поле со списком Выбор товара.
Далее эле154Рис. 3.17. Запрос для поля со списком Выбор товарамент управления делается доступным с помощью присваивания свойству Enabled значения True. Затем используется метод Requery для выполнения повторного запроса к источнику данных этого списка. С помощью метода SetFocus устанавливается фокус на данный элемент управления.Теперь создадим поле со списком Выбор товара. В качестве источникастрок для данного списка зададим запрос, показанный на рис. 3.17.Зададим значения еще нескольким свойствам данного элемента управления (табл.
3.19).Т а б л и ц а 3.19Значения некоторых свойств поля со списком Выбор товараЗначениеСвойствоПрисоединенный стол 1. В этом случае присоединенным будет первыйстолбец запроса, приведенного на рис. 3.17бец (ВошкЮйитп)Количество столбцов3(СокиппСошй)Ширит столбцов(Со1итпУУМЙ1)0 см; 0 см. В данном случае задается ширинапервого и второго столбцов; ширина третьегостолбца не задается, так как она будет равнаширине спискаШирина спискаАвто (Auto)В данном запросе отбираются только записи, содержащие информацию о товарах категории, которая выбрана в поле со списком Выборкатегории товара.
Чтобы обеспечить это в качестве условия отбора пополю Категория, зададим следующее выражение:[ F o r m s ] ! [ Т о в а р ы ] ! [Выборкатегориитовара].Теперь необходимо создать процедуре обработки события После обновления (AfterUpdate) поля со списком Выбор товара, основное предназначение которой — применить фильтр для вывода в области данныхтолько информации о выбранном товаре:Private Sub Выбор_товара_А£terUpdate()DoCmd.ApplyFilter , "[Код товара] = Forms! Товары! [Выбортовара] r rMe [Код товара].Enabled = FalseMe Категория.Enabled = TrueMe Категория.SetFocusMe Наименование.Enabled = TrueMe Цена.Enabled = TrueEnd SubВ данной процедуре фильтр применяется с помощью метода ApplyFilterобъекта DoCmd. Другие инструкции делают доступными соответствующие элементы управления.Также необходимо создать две процедуры обработки формы: для событий Открытие (Activate) и После обновления (AfterUpdate).
Перваяпроцедура определяет режим изменения данных для формы после ееоткрытия, а вторая — выполняет повторный запрос к источнику данных поля со списком Выбор товара каждый раз, когда добавляется новая запись в форме.Процедура обработки события После обновления (AfterUpdate) формыТовары имеет следующий вид:Private Sub Form_AfterUpdate()Me![Выбор товара].RequeryEnd SubВ данной процедуре используется только метод Requery для обновления запроса к источнику данных элемента управления Выбор товара активной формы.Приведем процедуру обработки события Открытие (Activate):Private Sub Form_Activate()'Задаем режим изменения данныхMe .AllowEdits = TrueMe .AllowAdditions = False'Включаем поле со списком Выбор категории товара и'переходим на негоMe![Выбор категории товара].Enabled = TrueMe![Выбор категории товара].SetFocusMe![Выбор товара].Enabled = False156'Отключаем элементы управления в области данныхMe![Код товара].Enabled = FalseM e ![Категория].Enabled = FalseMe ![Наименование] .Enabled = FalseMe ![Цена].Enabled = FalseEnd SubТеперь создадим группу из двух переключателей Изменение и Добавление, которые позволят переходить из режима изменения информациио товарах в режим добавления информации о новых товарах.