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







