Обозначение измененной записи

Редактирование записи — двухэтапный процесс. Сначала вы изменяете одно или несколько значений полей, что переводит запись в режим редактирования. Затем вы закрываете форму или переходите к другой записи, что фиксирует внесенные вами изменения. Или вы нажи­маете клавишу <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 и все готово.