Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Как код связывается с событиямиСодержание книги
Поиск на нашем сайте
Все дело в имени - в имени процедуры. Когда вы открываете форму, в которой есть соответствующий программный код, программа 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 общедоступная или частная — ваш код все равно может вызывать ее.
Подсказка Если вы хотите повторно использовать код в нескольких местах одной и той же формы (например, в ответ на нажатие разных кнопок), подумайте о создании собственной процедуры и размещении кода в ней. Если же предполагается использование одного фрагмента кода в нескольких формах, лучше поместить его в процедуру, хранящуюся в отдельном модуле.
Чтение и запись полей на форме Как вы узнали в главе 15, самые замечательные макросы — те, которые контролируют ваши формы и элементы управления. Код VB справляется с этой задачей потрясающе легко. Вам просто нужно знать имена всех элементов управления, с которыми вы хотите работать. Предположим, что вы разрабатываете (нечто опасное) программную процедуру, очищающую текстовое поле. Вы планируете применять ее для сбрасывания текста в поле Description (описание). Далее приведена строка кода, выполняющая эту работу: Description = "" В этой строке приведен основной оператор присваивания языка Visual Basic (строка кода, изменяющая порцию данных), и вся строка сосредоточена вокруг знака равенства (=). Когда Access выполняет эту строку кода, программа берет содержимое справа от знака равенства (в данном случае пустую строку со знаками кавычек, представляющими текст) и вставляет его во вместилище, расположенное слева от знака равенства (в данном случае поле Description). В результате содержимое поля Description стерто.
Примечание Можно также использовать знакомые квадратные скобки, т. е. [Description] вместо Description. Скобки не обязательны, если вы не настолько самонадеянны, чтобы пренебрегать правилами именования, с которыми познакомились в разд. "Правило 1. Выбирайте подходящие имена полей" главы 2. Если у вас есть имя текстового поля с пробелом, такое имя нужно обязательно заключать в квадратные скобки.
Конечно же, можно использовать, конкретный текстовый фрагмент: Description = "Введите сюда что-нибудь, пожалуйста" Результат выполнения этого кода аналогичен вашему собственноручному вводу текста (за исключением того, что происходит все гораздо быстрее). Как известно, при корректировке любого поля текущая запись переводится в режим редактирования. Как только вы переходите к другой записи или закрываете форму, программа Access фиксирует изменения и сохраняет новые значения в БД. С помощью фиксированных значений можно решить только ограниченный круг задач. В результате, когда используется фиксированное текстовое значение, вначале нужно решить, что именно вы хотите использовать. Когда вы щелкните кнопку мышью и запустите код, возможно, ваши желания изменятся. По этой причине программисты редко используют фиксированные значения в подобном случае. Вместо этого они предпочитают более сложные выражения, очень похожие на выражения Access, которые применялись в вычислениях запросов (см. разд. "Вычисляемые поля" главы 7) и условий на значения (см. разд. "Правила верификации или условия на значения" главы 4). С текстом можно использовать оператор слияния & для создания длинного фрагмента текста из нескольких более коротких фрагментов. Далее приведен пример, в котором берется текущее описание, и к нему в конец добавляется предложение, идентифицирующее товар по названию. Description = Description & " This is a description for " & ProductName & "." Если начальное значение Description равно "Enjoy delectable waves of fudge." ("Насладитесь упоительными волнами сладости."), в результате оно может стать таким "Enjoy delectable waves of fudge. This is a description for Fudge Tsunami." ("Насладитесь упоительными волнами сладости. Это описание Fudge Tsunami.").
|
||||
Последнее изменение этой страницы: 2016-08-14; просмотров: 156; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.108.172 (0.008 с.) |