Обозначение измененной записи
Редактирование записи — двухэтапный процесс. Сначала вы изменяете одно или несколько значений полей, что переводит запись в режим редактирования. Затем вы закрываете форму или переходите к другой записи, что фиксирует внесенные вами изменения. Или вы нажимаете клавишу <Esc> для отмены изменений и затем возвращаетесь к первоначальным значениям.
Если вы пользуетесь панелью Запись(Record Selection) (при условии, что в свойстве Кнопки перехода(Record Selectors) установлено значение Да, стандартный вариант), программа Access показывает переход в режим редактирования, заменяя крошечную стрелку в верхнем левом углу формы маленькой пиктограммой карандаша. Эта пиктограмма — полезный индикатор того, что в вашей форме что-то изменено, и нужно решать, принимать ли эти изменения. Но новички программы Access, как и профессионалы, легко могут не заметить крошечную пиктограмму карандаша. Именно поэтому большинство пользователей предпочитают более явное свидетельство внесенных изменений, такое как отображение сообщения на форме или изменение цвета фона.
В следующем примере демонстрируется этот подход. Результат показан на рис. 16.8.
Для создания этого примера необходимо начать с построения подходящей формы. Возьмите обычную форму и добавьте элемент управления Подписьв раздел Примечание формы.Задайте для подписи приемлемое имя, например, InfoMessage (информационное сообщение), изменив значение свойства Имяв Окне свойств.Теперь можно начать писать программный код.
Примечание
Имена элементов управления важны. Они используются для ссылок на объекты в программном коде. Когда вы читаете фрагмент кода, никто, даже вы, не догадается, что обозначает имя Labеl44.
Прежде чем добавить ваш код к форме, необходимо определить следующее.
■ Когда запустится ваш код? Иными словами, нужно указать событие, которое должно его запускать. После того как вы дали ответ на этот вопрос, можно создавать корректную процедуру.
■ Что должен делать ваш код? Иначе говоря, следует решить, какие объекты использовать и какие свойства изменять. Когда ответ найден, можно писать код в вашей процедуре.
В данном примере необходимо реагировать на событие формы Изменение данных (On Dirty). Оно возникает, когда запись изменяется любым способом и форма переключается в режим редактирования. Если изменяются несколько значений, событие Изменение данных(On Dirty) возникает только для первого изменения. После этого форма уже находится в режиме редактирования.
Примечание
У каждого отдельного элемента управления есть собственное событие Изменение данных(On Dirty), которое происходит, когда кто-то в первый раз изменяет определенный элемент. Не стоит обращать внимание на эти события. Вам нужно использовать событие формы Изменение данных(On Dirty), таким образом вы поймаете все возможные изменения.
Рис. 16.8.Вверху; на первый взгляд форма кажется обычной. Внизу: если откорректировано какое-либо значение, цвет фона изменяется и в нижней части отображается текстовое сообщение
Далее приведена процедура, необходимая для реагирования на событие вашей формы Изменение данных(On Dirty):
Private Sub Forrn_Dirty(Cancel As Integer) End Sub
Примечание
Эта процедура выглядит несколько иначе, чем виденные вами ранее процедуры, т. к. она включает поддержку отмены действий. Сейчас не обращайте внимания на этот параметр — вы узнаете о нем все в конце разд. "Принятие решений" главы 17.
Данную процедуру можно вручную внести в существующий модуль (если только использовать для вашей процедуры то же самое имя) или добавить его с помощью Окна свойств(просто выбрать Формав списке Окна свойств,затем указать событие Изменение данных,далее в поле события выбрать из списка Процедура обработки событийи щелкнуть мышью кнопку с многоточием).
Далее следует самая увлекательная часть — написание программного кода. Сначала вам нужен оператор, изменяющий цвет фона формы. У объекта Form нет свойства BackColor (цвет фона), зато такое свойство есть у объектов, представляющих отдельные разделы формы (Details (область данных), FormFooter (примечание формы) и FormHeader (заголовок формы)). Таким образом, можно применить следующий программный код: Detail.BackColor = vbRed
Необходимо также задать текст сообщения в элементе управления Подпись3:
InfoMessage.Caption = "Вы изменили данную запись. " & _
"Если перейдете к другой записи, ваши изменения будут внесены. " & _
"Для отмены изменений нажмите клавишу Esc."
Поместите два оператора в процедуру Form_Dirty и все готово.