![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 163; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.71.135 (0.012 с.) |