Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Access 2007

.pdf
Скачиваний:
116
Добавлен:
11.05.2015
Размер:
23.5 Mб
Скачать

В программу Access 2007 введено свойство, названное привязкой, позволяющее создавать элементы управления, которые могут увеличиваться для заполнения дополнительного пространства, когда изменяются размеры окна Access. Привязку выполнить корректно трудновато, но если у вас есть поля с тестом большого объема, овчинка стоит выделки.

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

Если привязать элемент управления к правой стороне формы, это будет совсем другая история. Когда форма становится шире, элемент управления прижимается к правой стороне, перемещаясь в новое положение. Аналогично, если вы привяжете элемент управления к нижней стороне окна и затем увеличите высоту окна, элемент сохранится на том же расстоянии от нижнего края окна, независимо от нового размера окна. Удивительная вещь произойдет, если привязать элемент управления к противоположным сторонам. В этом случае его положение не изменится, но изменится его размер. Если элемент привязан к левой и правой сторонам окна, он станет шире при увеличении ширины окна. На рис. 13.8 показано, как изменится форма, если привязать элементы управления к разным сторонам.

Подсказка

Расстояние между элементом управления и стороной привязки всегда остается неизменным.

Рис. 13.8. В эту форму включены элементы управления с привязкой к разным сторонам формы. Поля ID и Email привязаны к правой и верхней сторонам, а поле Notes — к правой и нижней. Когда форма увеличивается, элементы управления перемещаются

441

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

На профессиональном уровне. Насколько велик ваш экран?

Когда дело касается мониторов, размер не важен (на самом деле). Вот что действительно важно, так это разрешение монитора. Разрешение определяет количество пикселов (крошечных точек), отображаемое вашим монитором. Если разрешение вашего монитора высокое, на экране поместится больше содержимого. Единственный недостаток — все выведенное на экран будет мельче. Если раскрыть на весь экран окно программы Access и лист данных в нем, на экране с высоким разрешением вы увидите больше строк и столбцов одновременно по сравнению с экраном с низким разрешением.

Как правило, пользователи стараются применять разрешение 800x600 или 1024x768, хотя более высокие разрешения тоже не редки. (Разрешение 800x600 означает 800 пикселов по ширине и 600 пикселов по высоте.) Важно не только заданное вами разрешение. Если вы планируете использовать БД Access совместно с другими людьми, возможно, вам захочется проверить, хорошо ли выглядят ваши формы при других часто используемых разрешениях.

Для определения текущего разрешения сверните все программы. Затем щелкните правой кнопкой мыши рабочий стол Windows и выберите команду Свойства. На экране появится окно Свойства: Экран. Выберите вкладку Настройка для выяснения текущего разрешения монитора и для испытания воздействия других разрешений на внешний вид ваших форм.

Увеличение ширины элемента управления до ширины формы

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

Выполните следующие действия.

1.Сначала убедитесь в том, что у формы нет лишнего пустого пространства. В Конструкторе сожмите раздел Область данных, так чтобы его ширины хватало лишь на размещение элементов управления.

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

2.Выделите элементы управления, которые хотите растянуть до ширины окна.

Если у вас форма, показанная на рис. 13.7, можно выбрать все элементы управления Поле. Держите нажатой клавишу <Shift>, пока щелкаете их кнопкой мыши.

На рис. 13.9 показан результат, который вы получите.

442

Примечание

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

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

3.Выберите на ленте Инструменты конструктора форм | Упорядочить → Размер → Привязка

Растянуть вдоль верхнего края (Form Design Tools | Arrange Size Anchoring

Stretch Across Top). (Если вы предпочитаете настраивать параметры привязки в Режиме макета, выберите Работа с макетами форм | Упорядочить → Положение → Привязка → Растянуть вдоль верхнего края (Form Layout Tools | Arrange Position Anchoring Stretch Across Top).)

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

443

Увеличение размера элемента управления до максимально возможного

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

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

Вот как реализовать эту модель на практике.

1.В Конструкторе сожмите ширину раздела Область данных настолько, чтобы ее хватало лишь для размещения элементов управления.

При любых типах привязки ваш главный враг — свободное пространство.

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

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

3.Выберите на ленте Инструменты конструктора форм | Упорядочить → Размер → Привязка → Растянуть вниз и по горизонтали (Form Design Tools | Arrange Size Anchoring Stretch Down and Across).

Этот шаг привяжет элемент управления ко всем четырем сторонам формы: верхней, нижней, левой и правой. В результате элемент увеличится, если форму расширить или растянуть по вертикали. Если вы хотите, чтобы элемент управления увеличивал только вертикальный размер, а горизонтальный оставался прежним, выберите Привязка → Растянуть вниз (Anchoring Stretch Down).

4.Выделите первый элемент управления под элементом, увеличивающим вертикальный размер. Выберите Привязка → Снизу слева (Anchoring Bottom Left).

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

Можно также использовать вариант Растянуть вдоль нижнего края (Stretch Across Bottom). В этом случае элемент управления также привязан к нижней стороне, но он увеличивается горизонтально в соответствии с шириной формы.

Примечание

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

444

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

5.Повторите пункт 4 для каждого элемента управления, расположенного ниже.

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

При условии, что привязка выполнена корректно, вы получите результат, показанный на рис. 13.10.

Рис. 13.10. Теперь, когда окно формы станет больше по вертикали, поле Notes получит дополнительное пространство

Последовательность перехода: облегчение переходов с помощью клавиш

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

445

клавиатурных команд не хотят терять время на отрывание пальцев от клавиш. Тут на помощь приходит клавиша <Таb>.

Возможно, вам известно, что клавиша <Таb> позволяет переходить от одного элемента управления к другому в любом приложении Windows. Она также действует на листе данных, обеспечивая переход из одного столбца в следующий. Поэтому вас не должно удивить то, что клавиша <Таb> работает и в формах.

Первое нажатие клавиши <Таb> на форме может привести в изумление. Если вы потратили много времени на настройку элементов управления и их переупорядочивание, клавиша <Таb> необязательно приведет вас к тому элементу управления, на который вы рассчитываете. Рис. 13.11 иллюстрирует эту проблему.

Рис. 13.11. Вы рассчитываете, что, нажав клавишу <Таb>, перейдете из поля FirstName в поле LastName. Но попробуйте сделать это и окажетесь в поле Country, расположенном в середине формы

Примечание

Клавиша <Таb> всегда действует корректно, если применяется табличный макет или макет в столбец, поскольку программа Access помнит ее последний переход, пока вы перемещаетесь между элементами управления. Только если вы извлекли элементы из макета, вы столкнетесь с описываемой проблемой.

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

446

с помощью клавиши <Таb>, есть три важных свойства (которые можно найти на вкладке Другие в Окне свойств). Это следующие свойства.

Переход по Tab (Tab Stop) определяет, поддерживает ли элемент управления переходы с помощью клавиши <Таb>. Если установить значение Да, можно с помощью клавиши <Таb> перейти в этот элемент. Если изменить значение свойства на Нет, неважно, сколько раз вы нажмете клавишу <Таb> — вы никогда не попадете на этот элемент управления. Когда впервые вставляется элемент, у этого свойства всегда установлено значение Да.

Автопереход по Tab (Auto Tab) оказывает влияние, только если элемент управления использует маску ввода (см. разд. "Маски ввода " главы 4). Если задать этому свойству значение Да, то как только вы введете последний символ в маску, вы автоматически перейдете к следующему элементу управления. Это свойство очень удобно для быстрого ввода данных, но может мешать, когда допущена ошибка, поскольку вы переходите к следующему элементу прежде, чем успеете ее исправить.

Индекс перехода по Tab (Tab Index) управляет последовательностью перехода — иначе говоря, определяет, куда вы переходите при каждом нажатии клавиши <Таb>. Когда форма открывается в первый раз, вы начинаете с элемента управления с индексом перехода по <Таb>, равным 0. Когда нажимается клавиша <Таb>, выполняется переход к элементу управления с ближайшим превышающим индексом перехода по <Таb> (например, 1). Этот процесс продолжается до тех пор, пока вы не достигнете элемента управления с максимальным индексом перехода. Нажмите снова клавишу <Таb>, и вывернетесь к началу.

Примечание

Эти свойства есть только у элементов управления, способных принять фокус — другими словами, элементов, которые можно щелкнуть кнопкой мыши для взаимодействия с ними. Очевидно, что Поля, Флажки и Кнопки поддерживают переходы с помощью клавиши <Таb>. А Подписи и Рисунки — нет, поскольку нет возможности обмена информацией с ними.

При каждом добавлении нового элемента управления программа Access присваивает ему новый более высокий индекс перехода по <Таb>. Даже если вы помещаете новый элемент на самый верх формы, Access помещает его в конец последовательности перехода. Для исправления этой проблемы можно выделить каждый элемент управления в Конструкторе и изменить значение свойства Индекс перехода по Tab вручную. Но альтернатива, требующая гораздо меньших затрат времени, позволяет установить последовательность перехода для всей формы сразу. Вот как она действует.

1.Щелкните правой кнопкой мыши свободное место на форме и выберите команду

Переходы.

На экране появится диалоговое окно Последовательность перехода. В нем перечислены все элементы управления на вашей форме, поддерживающие переходы по клавише <Таb>, начиная с самого низкого индекса перехода и заканчивая самым высоким.

2.В списке Раздел (Selection) выберите раздел формы, с которым хотите работать. Почти всегда это Область данных.

Вдиалоговом окне Последовательность перехода (Tab Order) можно задать нужную последовательность отдельно для каждого раздела формы. Если в форму включены Заголовок формы и Примечание формы, можно выбрать работу с одним из этих разделов

447

или с Областью данных. Но очень редко попадается форма с элементами управления, поддерживающими переходы по клавише <Таb>, расположенными за пределами Области

данных.

3.Если хотите позволить программе Access попытаться задать правильную последовательность переходов, щелкните мышью кнопку Авто (Auto Order).

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

4.Для переноса одного элемента управления в новое место в последовательности перехода перетащите его мышью.

Этот шаг требует небольшой ловкости. На рис. 13.12 показано, как он выполняется.

Рис. 13.12. Для изменения местоположения элемента управления в последовательности перехода начните со щелчка кнопкой мыши серого поля, находящегося слева от элемента управления. Выделится вся строка списка. Далее перетащите элемент в новую строку в списке. В данном примере поле Country перемещается вниз в последовательности перехода

5. Когда исправите последовательность перехода, щелкните мышью кнопку ОК.

Подсказка

Последовательность перехода действует в двух направлениях. Можно перейти к очередному элементу в последовательности, нажав клавишу <Таb>, и к предыдущему элементу, нажав комбинацию клавиш <Shift>+<Tab».

448

Контроль с помощью элементов управления

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

Блокировка полей

В БД почти все порции информации — объекты для изменения. Но это не означает, что следует всем предоставить свободный доступ ко всем полям.

Предположим, что компания Boutique Fudge создает форму CurrentOrders (текущие заказы), которая позволит персоналу склада просматривать ожидающие обработки заказы клиентов, отсортированные по дате. Персонал склада должен просмотреть каждый заказ, упаковать и затем отправить его. Единственное изменение, которое она должны вносить, — обновление состояния заказа (обозначить дату его отправки) или вставить запись в журнал регистрации доставки. Другие подробности, такие как дата заказа, содержимое заказа и клиент, получающий заказ, должны быть закрыты. У сотрудников склада нет причин изменять эти данные.

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

У любого присоединенного элемента управления (элемента, отображающего поле вашей таблицы) есть два свойства, которые можно применять для контроля редактирования. Эти свойства можно изменять в Окне свойств в режиме Конструктор.

Блокировка (Locked) определяет, можно ли изменять поле. Если у свойства значение Да, нельзя редактировать значение поля. Но при этом можно выделить содержимое поля и скопировать его.

Доступ (Enabled) позволяет полностью отключить элемент управления. Если значение свойства равно Нет, элемент выводится с недоступным текстом серого цвета. Несмотря на то, что вы видите значение поля в отключенном элементе управления, обмениваться с ним информацией у вас нет никакой возможности. Если это элемент управления Поле, вы даже не можете выделить и скопировать содержащийся в нем текст.

Подсказка

Если вы хотите запретить любые варианты редактирования, рассмотрите возможность применения свойств формы Разрешить изменение (Allow Edits), Разрешить удаление (Allow Deletions) и Разрешить добавление (Allow Additions), описанных в табл. 12.2.

449

Предупреждение ошибок с помощью условий на значения

В главе 4 вы узнали, как предупреждать проникновение ошибок в ваши таблицы с помощью правил верификации или условий на значение, значений по умолчанию и масок ввода. Такая многоуровневая проверка — существенная часть проектирования БД.

Но в некоторых ситуациях условия на значения не помогут, поскольку они применяются не всегда, а время от времени. Вы вряд ли захотите, чтобы продавцы в Boutique Fudge вводили новый заказ со старой датой. Ясно, что это ошибка — у нового заказа должна быть текущая дата. Для выявления и устранения этой проблемы умный разработчик, вроде вас, может использовать следующее условие на значение в поле OrderDate:

<=Date ( )

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

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

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

Условие на значение (Validation Rule) задает выражение, которому должно удовлетворять значение для того, чтобы считаться допустимым. Например, выражение <=Date ()

сравнивает текущее значение поля с датой, возвращаемой функцией Date () (которая представляет текущую дату). Ввод разрешается, только если вводимая дата сегодняшняя или предшествующая. Гораздо больше примеров выражений для проверки значений можно найти в разд. "Запись условия на значение поля" главы 4.

Сообщение об ошибке (Validation Text) задает текст сообщения об ошибке, которое выводится, если вы пытаетесь ввести значение, нарушающее условие на значение. Этот пользовательский текст заменяет общее сообщение об ошибке программы Access — "Для введенного значения не выполняется условие на значение данного поля или элемента управления" — в котором для реальных пользователей мало смысла.

Маска ввода (Input Mask) задает образец, который направляет и ограничивает пользовательский ввод. Маски ввода — хороший способ обработки текстовых значений фиксированной длины, например, телефонных номеров, почтовых кодов и номеров социального обеспечения. В разд. "Маски ввода" главы 4 приведена подробная информация о том, как действуют и создаются маски ввода.

Значение по умолчанию (Default Value) задает значение, которое выводится в поле, когда создается новая запись. (Вы, конечно, можете изменить значение по умолчанию, если оно вас не устраивает.) Для форм значения по умолчанию очень удобны, поскольку такие значения чаще применяются в конкретных задачах, а не во всей таблице.

450

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]