Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Как код связывается с событиями




Все дело в имени - в имени процедуры. Когда вы открываете форму, в которой есть соответствующий программный код, программа Access ищет процедуры с определенными именами.


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

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

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

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

 

 

Вызов кода в модуле

Полученные знания могут вызвать вопрос: в каких ситуациях вообще может возникнуть необходимость в создании стандартного модуля вручную? Помимо всего прочего нет удоб­ного способа выполнения программного кода и возможности связать его с событием эле­мента управления на форме.

Стандартные модули полезны, если создан удивительно удачный фрагмент программно­го кода, который хочется применять в разных местах. Скажем, вы разработали отличную процедуру поиска и хотели бы использовать ее в двух, трех или четырех десятках различных форм. Этот код можно вырезать и вставить во все процедуры, которые в нем нуждаются. Помимо того, что дублирование кода — всегда плохой выбор (как и дублирование данных). Почему? Подумайте, что произойдет, если вам придется исправлять ошибку или вносить корректировку. Из-за дублирующегося кода придется найти все его копии и повторить в них одно и то же изменение. Это надежный способ потратить свои выходные дни.

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

Private Sub ButtonOfPower_Click()

MyModule.MyCodeRoutine End Sub


Далее приведен оперативный отчет о происходящем в процессе применения данного кода.

1. Нажимается кнопка ButtonOfPower.

2. Программа Access находит процедуру ButtonOf Power_Click и выполняет ее.

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

4. После того как процедура MyCodeRoutine завершила работу, Access выполняет оставшийся код в процедуре ButtonOf Power_Click. В данном примере в процедуре нет никаких операторов, поэтому процесс завершается в этот момент.

Вы можете вставить одну задачу в любое число процедур. Можно также вызывать про­цедуры, которые в свою очередь вызывают другие процедуры, также вызывающие дополни­тельные процедуры и т. д.

 

 

Примечание

Подобный прием можно использовать только в случае общедоступных процедур. Частные (Private) не доступны для программного кода, находящегося за пределами модуля, в кото­ром эти процедуры хранятся. Автоматически всем процедурам назначается режим доступа Public до тех пор, пока вы не вставили слово Private перед словом Sub. Таким образом, процедура MyCodeRoutine в разд. "Написание процедуры с простейшим программным ко­дом" ранее в этой главе общедоступна.

 

 

Если обе процедуры, ButtonOf Power_Click и MyCodeRoutine, хранятся в одном моду-, ле, можно применить некоторую рационализацию. Не нужно включать имя модуля в имя процедуры MyCodeRoutine. Вы можете использовать приведенный далее код:

Private Sub ButtonOfPower_Click()

MyCodeRoutine End Sub

Теперь программа Access полагает, что процедура MyCodeRoutine должна быть в том же модуле и ищет ее в нем. В данном случае неважно, процедура MyCodeRoutine общедоступ­ная или частная — ваш код все равно может вызывать ее.

 

Подсказка

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

 

 





Поделиться с друзьями:


Дата добавления: 2016-03-28; Мы поможем в написании ваших работ!; просмотров: 389 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Что разум человека может постигнуть и во что он может поверить, того он способен достичь © Наполеон Хилл
==> читать все изречения...

2526 - | 2336 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.