Главная страница

Краткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33


Скачать 19.64 Mb.
НазваниеКраткое содержание 29 Об этих стрелках 30 о сочетаниях клавиш 32 о щелчках кнопкой мыши 33 Примеры 33
АнкорAccess_2007.doc
Дата16.03.2017
Размер19.64 Mb.
Формат файлаdoc
Имя файлаAccess_2007.doc
ТипКраткое содержание
#3862
страница46 из 65
1   ...   42   43   44   45   46   47   48   49   ...   65

Рис. 16.6. Когда вводится имя объекта и затем точка, Visual Basic выводит список вариантов. Если ввести несколько букв, Visual Basic перейдет к соответствующему участку списка. Если вы увидели нужное свойство, его можно вставить щелчком кнопки мыши или нажатием клавиши <Пробел>

Свойство можно найти с помощью средства VisualBasicIntelliSense. Редактор Visual Basic предлагает замечательный инструмент, способный помочь найти нужное свойство. Как только вы ввели точку после имени объекта, редактор выводит на экран список всех свойств и методов, которые можно применять к данному объекту (рис. 16.6).
Примечание

Список IntelliSense содержит два вида элементов: свойства (отдельные характеристики, ка­сающиеся объекта) и методы (действия, которые можно выполнять с объектом). Свойств больше и они помечены пиктограммой руки, держащей почтовую открытку. Методы снабжены пиктограммой парящего зеленого ластика. Вы узнаете, как пользоваться методами в следую­щем разделе.

На профессиональном уровне.

Взаимодействие с другими формами
Как вы узнали в главе 15, можно извлекать и задавать значения свойств полей и элемен­тов управления на текущей форме или других открытых в данный момент формах. Хит­рость заключается в том, что нужно явно указать программе Access, какую форму вы пытаетесь использовать.

Предположим, что вы хотите изменить цвет элемента управления Price (цена) на форме Product (товар) при щелчке мышью кнопки, находящейся на форме PriceChanger (преобразователь цен). Приведенный далее код не работает, поскольку Access ищет не­существующий элемент управления Price на форме PriceChanger:

Price.BackColor = vbRed

Следующий код отлично использует описанную хитрость и направляет программу Ac­cess к правильной форме:

Forms("Product").Price.BackColor = vbRed

Технически приведенный код заставляет программу Access заглянуть в коллекцию Forms (формы), отслеживающую все открытые в данный момент формы. (Если в на­стоящий момент форма Product не открыта, этот оператор даст сбой.) Он извлекает из коллекции форму Product, переходит к форме для доступа к элементу управления Price и затем углубляется в него для поиска свойства BackColor (Цвет фона).

Логически равноценную строку кода можно записать двумя способами. Программисты Access старого образца применяют причудливый синтаксис с восклицательными знака­ми, который выглядит следующим образом:

Forms!Product!Price!BackColor = vbRed

Программа Access интерпретирует обе строки одинаково. Это просто дело вкуса. Но вы должны знать оба варианта, на случай, если столкнетесь со странным кодом с восклица­тельными знаками.

Если вас огорчает, что этот подход приводит к ошибке в случае закрытой нужной фор­мы, оба описанных метода не смогут выручить вас. В главе 17 вы узнаете, как открывать форму, когда захочется.

В табл. 16.1 перечислены некоторые свойства элементов управления, которые могут вам понадобиться в программном коде на языке Visual Basic.

Таблица 16.1. Полезные свойства элементов управления

Свойство

Тип данных

Описание

Value (значение)

Зависит от конкрет­ного элемента

Хранит значение элемента управления. Обычно все элементы связаны с полями, поэтому свой­ство Value позволяет считывать или изменять значение из текущей записи. В зависимости от типа данных поля свойство может быть тексто­вым, числовым, логическим и т. д.

Enabled (включено или доступно)

True (истина) или False (ложь)

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

Visible (видимый)

True (истина) или False (ложь)

Определяет, может ли пользователь, работающий с формой, видеть элемент управления. Если у свойства значение False (ложь), элемент исче­зает с формы. Это свойство — удобный способ скрыть неиспользуемые поля. Если клиент живет в Замбии, можно скрыть поле State (штат)

ForeColor (цвет текста) и BackColor (цвет фона)

Число

Определяет цвет для вывода текста (цвет текста) и цвет, отображаемый за текстом (цвет фона)

Left (слева) и Тор (сверху)

Число

Определяет местоположение элемента управле­ния на форме. Свойство Left (слева) определя­ет расстояние от левого края формы до левого края элемента. Свойство Тор (сверху) задает расстояние от верхнего края формы до верхнего края элемента управления. Оба значения зада­ются в пикселах

Width (ширина) и Height (высота)

Число

Определяет размер элемента управления в пик­селах

FontName (шрифт) и FontSize (размер шрифта)

Текстовая строка и число (соответственно)

Определяет шрифт, который применяется для отображения текста в элементе управления. FontName — это название гарнитуры шрифта (например, "Arial"), a FontSize — его раз­мер в пунктах (например, 10)

FontBold (жирное начертание) и FontI-talic (курсив)

True (истина) или False (ложь)

Определяет способ начертания текста (жирный или наклонный)

Picture* (рисунок)

Текстовая строка

Позволяет отображать фоновое изображение на части формы, на вкладке или кнопке. Вы задае­те путь к файлу с рисунком

Таблица 16.1 (окончание)

Свойство

Тип данных

Описание

Text* (текст)

Текстовая строка

Задает текущий текст в текстовом поле. В боль­шинстве случаев это свойство содержит те же данные, что и свойство Value. Но если кто-то редактирует текст и еще не перешел к другому элементу управления, содержимое этих двух свойств разное. Свойство Value содержит текст, хранящийся в таблице, а свойство Text — отредактированные данные, которые еще не применены

Caption* (подпись)

Текстовая строка

Задает текст подписи или кнопки или заголовок формы. Это свойство важно, когда создаются подписи, не связанные с полями таблицы. Эле­мент управления Подпись можно применять для отображения сообщения о состоянии или статусе

IternsSelected* (выбранные элементы)

Объект-коллекция

Представляет собой коллекцию, объект специ­ального типа, содержащий ноль или больше подобъектов. Данная коллекция содержит значения всех выбранных в данный момент в списке элементов. Свойство ItemsSelected полезно, только если создан список, поддерживающий многочисленные выделения, В противном случае используйте свойство Value

* Это более специальные свойства и в большинстве элементов управления они не используются.

Методы
Методы позволяют выполнять действия с объектом. Во многих случаях вызов метода дает больше, чем просто задание свойства. В самом деле, один метод может выполнить ком­плексную операцию, которая повлияет на многие свойства. Метод Requery (обновление) заставляет вашу форму получить самые свежие данные из БД и затем обновить содержимое всех ее элементов управления.
Подсказка

Если применяются элементы управления, большая часть времени тратится на работу со свой­ствами. Действительно, у элементов управления огромное множество свойств и лишь несколь­ко добавочных методов.
Для применения метода вводится имя объекта с последующей точкой, за которой наби­рается имя метода. Но вам не нужен знак равенства, т. к. вы не задаете значение метода. Вы просто вызываете его для выполнения или активизируете.

Далее приведен пример обновления текущей записи формы с помощью метода Refresh (обновить объект):

Form.Refresh

Иногда методу требуется дополнительная информация. Если у вас как раз тот случай, вы узнаете об этом, т. к. средство Visual Basic IntelliSense даст знать в процессе написания про­граммного кода (рис. 16.7).
Р
ис.
16.7. Редко применяемый метод Move позволяет одним махом изменить местоположение и размер элемента управления. Как только вы введете имя метода, редактор Visual Basic отобразит четыре значения, которые нужно задать. В данном примере только первое значение (Left) обязательно — остальные заключены в квадратные скобки, что свидетельствует о возможности их пропуска
Если в методе нужно задать дополнительные данные, следует добавить пробел после имени метода и дальше указать соответствующее значение. Если требуется ввести несколь­ко значений, каждое из них следует отделять запятой. Далее приведен пример, перемещаю­щий элемент управления в левый верхний угол формы:

Description.Move 0, 0
В табл. 16.2 перечислены наиболее важные методы элементов управления.

Таблица 16.2. Полезные методы элементов управления

Метод

Описание

SetFocus (установить фокус)

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

Undo (отмена)

Аннулирует самые последние (незафиксированные) измене­ния в элементе управления. Этот метод можно вызвать в форме для отмены всех изменений и возврата к исходным значениям. Если в данный момент форма не в режиме ре­дактирования, метод не делает ничего

Таблица 16.2 (окончание)

Метод

Описание

Recalc (повторное вычисление)

Пересчитывает любые выражения в элементах управления формы

Refresh* (обновить объект)

Получает из таблицы самые свежие значения для данной записи и, соответственно, обновляет форму. Этот метод по­лезен, если вы только что выполнили другую задачу, которая могла изменить запись, или работаете с многопользователь­ской БД (см. главу 18), в которой несколько человек одно­временно могут изменять запись

Requery* (обновление)

Повторно выполняет запрос, применяемый для получения данных формы, и затем отображает полученные данные, начиная с первой записи. Этот метод подобен методу Refresh, но воздействует не на текущую запись, а на все записи. Этот метод можно применять к списку подстановки для обновления его содержимого

* Эти методы применяются только к объектам формы, а не отдельным элементам управления.

События
Как вы знаете, события — это сообщения, которые объекты используют для передачи в ваш программный код сведений о том, что только что произошло нечто важное. Вы уже управ­ляли событиями и применяли их в данной главе для реагирования на щелчки мышью кно­пок. Список самых распространенных событий элементов управления приведен в табл. 15.4.

До сих пор не рассматривался один аспект: как события могут предоставлять дополни­тельные биты данных. Как вы, наверное, уже заметили, у каждой процедуры есть пара ско­бок. Посмотрим на них еще раз:

Private Sub ButtonOfPower_Click ()

В предыдущих примерах в этих скобках не было ничего. Но они введены не просто так. Некоторые события передают в ваш код дополнительную информацию о событии, и она вставляется в этот сэндвич из двух скобок.

Рассмотрим событие Нажатие клавиши (On Key Press) поля ввода, которое возникает каждый раз, когда кто-то нажимает символ на клавиатуре. Оно предоставляет специальный числовой код, обозначающий нажатую клавишу (программисты называют его кодом ASCII.)

Если добавить процедуру, реагирующую на событие Нажатие клавиши (On Key Press), программа Access сгенерирует код, подобный приведенному далее:

Private Sub MyTextBox_KeyPress(KeyAscii As Integer) End Sub

Этот код означает, что событие Нажатие клавиши (On Key Press) снабжает ваш код но­вой порцией информации. Это целое число, названное KeyAscii, его можно использовать в вашем коде.

Далее приведен пример, который просто отображает код нажатой клавиши в окне сооб­щения:

Private Sub MyTextBox_KeyPress(KeyAscii As Integer)

MsgBox "Вы нажали клавишу с кодом: " & KeyAscii
End Sub

Некоторые события предоставляют несколько порций данных. В этих случаях вы увиди­те в скобках целый список. Каждая порция данных отделяется запятой и называется пара­метром.
Примечание

Формально параметры — разновидность переменных. Переменные — это удобные контейне­ры, хранящие некоторые данные. (Эти данные могут меняться, поэтому их и назвали перемен­ными.) Вы узнаете больше об использовании переменных а разд. "Хранение информации в пе­ременных" главы 17.

Далее приведен пример для события Перемещение указателя (On Mouse Move), кото­рое возникает при перемещении указателя мыши поверх элемента управления. Открываю­щееся объявление процедуры такой длины, что приходится разделить его на две строки с помощью знака подчеркивания:
Private Sub SomeControl_MouseMove(Button As Integer, _

Shift As Integer, X As Single, Y As Single)

End Sub
В данном случае вы получаете четыре порции данных. Параметр Button обозначает, ка­кие кнопки мыши нажаты в данный момент. Параметр Shift показывает, удерживаются ли нажатыми во время перемещения мыши клавиши , и . И, наконец, па­раметры X и Y определяют местоположение указателя мыши (его координаты).

Применение объектов
Теперь, когда вы познакомились с основами языка Visual Basic, вам, наверное, не терпится начать писать реальный программный код. В следующих разделах представлены два приме­ра, заставляющие элементы управления работать.
Подсказка

Если хотите знать больше, можно найти подробное руководство по применению объектов в справочной, системе Access. Для получения справки выберите в редакторе VESA2 HelpСправка: Microsoft Visual Basic (Help → Microsoft Visual Basic Help). Дальше последовательно выберите следующие темы: Visual Basic for Applications Language Reference Microsoft Forms Visual Basic Reference Reference. Затем вы увидите список всех объектов, предла­гаемых программой Access (щелкните мышью строку Objects) или сформируйте комбиниро­ванный список событий, методов и свойств, предлагаемых объектами Access (щелкните кноп­кой мыши строку Events, Methods или Properties).

2 Справка редактора VBA приводится на английском языке. —. Пер.

Обозначение измененной записи
Редактирование записи — двухэтапный процесс. Сначала вы изменяете одно или несколько значений полей, что переводит запись в режим редактирования. Затем вы закрываете форму или переходите к другой записи, что фиксирует внесенные вами изменения. Или вы нажи­маете клавишу для отмены изменений и затем возвращаетесь к первоначальным зна­чениям.

Если вы пользуетесь панелью Запись (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 и все готово.

Практические занятия для опытных пользователей.

Получение нужного цвета
Если задавать цвет только с помощью ключевых слов, таких как vbRed, vbWhite и vbYellow, вы обделите себя. Существует множество пастельных тонов и волнующих оттенков, только и ждущих применения в вашем коде на языке Visual Basic. К сожале­нию, для задания этих цветов нельзя использовать ключевые слова. Вместо них придет­ся применять числовые коды цветов.

Чаще всего вы не будете знать правильного числового кода для цвета, который хотите использовать. Но эту проблему можно решить с помощью удобной функции RGB, вклю­ченной в язык Visual Basic (как и функция MsgBox, которая применялась раньше). Функция RGB принимает три отдельных числа, представляющих красную, зеленую и синюю составляющие цвета, и преобразует их в код цвета, который можно использовать для задания свойств ForeColor или BackColor.

3 На рис. 16.8 текст сообщения выводится на английском языке. Вы, разумеется, можете тоже выво­дить текст на английском. — Ред.

Далее приведен пример, использующий описанный метод, для применения оттенка светлого оранжево-розового цвета:

Detail.BackColor = RGB(266, 160, 122)

Этот оператор выполняется в два этапа. Сначала программа Access выполняет функцию RGB для создания кода цвета. Затем она заносит код цвета в свойство BackColor. На первый взгляд преимущество применения функции RGB может показаться не столь оче­видным, поскольку она требует указания трех отдельных чисел. На самом деле RGB-обозначение цвета — общепринятый стандарт, применяемый в Web-пространстве и в большинстве Windows-приложений. Найти цвет можно даже в указателе цвета про­граммы Access, а затем определить нужные RGB-компоненты, выполнив следующие действия.

  1. Откройте форму в Конструкторе.

  1. Выберите элемент управления и затем в Окне свойств щелкните кнопкой мыши поле Цвет текста (ForeColor) или Цвет фона (BackColor).

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

  1. Выберите кнопку Другие цвета (More Colors) для отображения полного набора цветов.

  2. Щелкните кнопкой мыши вкладку Спектр (Custom).

  3. Выберите цвет, как показано на рис. 16.9.

  4. Запишите RGB-значения. Их можно использовать в вашем программном коде.

  5. Щелкните мышью кнопку Отмена (Cancel) для возврата в программу Access.


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

Для устранения ошибки необходимо отреагировать на другое событие: событие формы После обновления (After Update). Оно возникает после того, как программа Access успешно зафиксирует изменение в БД. Далее приведен код, необходимый для возврата обычного внешнего вида формы:

Private Sub Form_AfterUpdate ()

Detail.BackColor = vbWhite

InfoMessage.Caption = "" End Sub

Примечание

He следует использовать событие До обновления (Before Update), поскольку оно возникает как раз перед фиксацией изменений. В этот момент вы не знаете, найдет ли программа Access некорректные данные, отобразит ли сообщение об ошибке и помешает ли обновлению (а в этом случае красный цвет фона следует сохранить).





Рис. 16.9. Для выбора цвета щелкните кнопкой мыши в цветовой сетке. (Перекрестье указывает вашу текущую позицию.) Затем используйте вертикальный ползунок для регулировки яркости цвета. Вы увидите, что по мере изменения цвета будут меняться значения Красный (Red), Зеленый (Green) и Синий (Blue)
Пример все еще не закончен. Помимо фиксации изменений пользователь может также нажать клавишу для их отмены. На эту возможность тоже следует отреагировать и применить тот же код для возврата к обычному состоянию формы. В данном случае исполь­зуется событие Отмена (On Undo):

Private Sub Form_Undo () Detail.BackColor = vbWhite InfoMessage.Caption = ""

End Sub
Этот шаг завершает пример. Для того чтобы увидеть все три процедуры вместе и испы­тать их в действии, загрузите из Интернета пример БД для данной главы (в разд. "Примеры" во введении объясняется, как обращаться с примерами БД).

Часто задаваемый вопрос.

Ленточные формы и неприсоединенные элементы управления

Я изменил свойство Режим по умолчанию (Default View) моей формы на значение Лен­точные формы (Continuous Form), и мой программный код сошел с ума. Что произошло?

Режим Ленточные формы (Continuous Form) (см. разд. "Отображение нескольких записей в любой форме" главы 12) — удобный способ одновременного отображения несколь­ких записей на форме. Но у него появляется ряд существенных ограничений при сопри­косновении с кодом. Вы увидите их, когда вставите свободные или неприсоединенные элементы управления — элементы управления, не связанные с каким-либо полем в БД. В предыдущем примере InfoMessage — образец свободного элемента управления. Ваш код применяет его для отображения текста по вашему желанию. Он не взаимодействует со значением поля в таблице.

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

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

К сожалению, подобное поведение отражает проектное ограничение Access. Лучший об­ходной прием — избегать ленточных форм при необходимости использовать свободные элементы управления.

Создание эффекта перемещения указателя мыши
Эффект перемещения указателя мыши (mouseover effect) — это действие, возникающее при перемещении мыши поверх какого-либо участка формы. Web-дизайнеры часто используют этот эффект для изменения внешнего вида кнопок при перемещении по ним указателя мыши.

В программе Access легко создать эффект перемещения указателя. Необходимо только отреагировать на событие Перемещение указателя (On Mouse Move). Вы можете использо­вать событие формы Перемещение указателя (On Mouse Move), если хотите следить за перемещением мыши по всей форме. Но гораздо чаще событие Перемещение указателя (On Mouse Move) применяется к конкретным элементам управления, что позволяет опреде­лить перемещение указателя поверх этих элементов управления.

В форме, приведенной на рис. 16.10, применяется эффект перемещения указателя мыши.

Как обычно для реализации подобного поведения, следует начать с добавления дополни­тельных необходимых элементов управления, например кнопки Don't Click Me (не щелкай меня мышью) и рисунка (названного HappyFace (счастливое лицо)).

Когда описанные детали добавлены, необходимо создать две процедуры. Первая реагирует на событие кнопки Перемещение указателя (On Mouse Move). Она заменяет рисунок счаст­ливого лица рисунком с расстроенным лицом, когда мышь перемещается поверх кнопки:

Private Sub DoNotClickButton_MouseMove(Button As Integer, _

Shift As Integer, X As Single, Y As Single)

HappyFace.Picture = "C:\Images\UnHappy.jpg" End Sub





Рис. 16.10. Вверху: первоначальное отображение формы. Внизу: когда мышь перемещается поверх кнопки Don't Click Me (не щелкай меня мышью), на изображении, расположенном сбоку, счастливое лицо сменяется расстроенным. Подвигайте мышь где-нибудь в другом месте, и счастливая физиономия вернется на экран

В этом коде предполагается, что файл с изображением (названный UnHappy.jpg) поме­щен в папку C:\Images.

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

Подсказка

Событие Перемещение указателя (On Mouse Move) возникает очень часто. Когда мышь пе­ремещается от одного края формы к другому, подобные события возникают многократно. По этой причине следует убедиться в быстроте выполнения написанного вами кода, реагирующего на данное событие, иначе он может сделать вашу форму медлительной.

Вторая процедура реагирует на событие Перемещение указателя (On Mouse Move) объ­екта формы Область данных, которая возникает, когда вы отодвигаете мышь от кнопки и

перемещаете ее поверх свободного пространства, находящегося вокруг нее. Данная про­цедура переключает на исходный рисунок, отображающий счастливое лицо.
Private Sub Detail_MouseMove(Button As Integer, _

Shift As Integer, X As Single, Y As Single)

HappyFace.Picture = "C:\Images\Happy.jpg"

End Sub

У написанного кода есть один недостаток. В данный момент он рассчитывает на то, что файлы UnHappy.jpg и Happy.jpg находятся в конкретных местах жесткого диска. Эту деталь трудно гарантировать — в конце концов, кто сказал, что вы не можете перенести их куда-нибудь в другое место или попытаться открыть БД на другом компьютере?

Лучше поместить рисунки в ту же папку, что и файл БД. Вы можете указать программе Access на подобное местоположение с помощью следующего кода:
HappyFace.Picture = CurrentProject.Path & "\Happy.jpg"

В этом коде применяется специальный объект, всегда доступный в любом коде, который вы пишите: объект CurrentProject (текущий проект), предоставляющий информацию о текущей БД и содержащихся в ней объектах. У объекта CurrentProject есть свойство Path (путь), задающее в виде текстовой строки местоположение текущей БД.

Поместив эту строку, вы сможете спокойно копировать вашу БД куда угодно при усло­вии, что файлы рисунков находятся в той же папке.

Практические занятия для опытных пользователей.

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

Тем не менее вы сможете отображать рисунок в форме Access. Метод прост — выполни­те лишь следующие действия.

  1. Добавьте на форму новый элемент управления Рисунок, но не связывайте его ни с каким полем. Вы выведете нужное изображение с помощью программного кода.

  2. Создайте обработчик события формы Текущая запись (On Current), который запускается при каждом переходе к записи.

  3. В обработчике события задайте в свойстве Picture (Рисунок) элемента управления то изображение, которое хотите вывести на экран. Если в вашей таблице есть поле, названное ImageFileName (имя файла с изображением), и элемент управления с именем Img, можно написать следующий код:

Img.Picture = CurrentProject.Path & _

"\Images\" & ImageFileName

В данном примере предполагается, что файлы рисунков хранятся в папке Images (изображения), находящейся в папке с файлом вашей БД. Когда форма загружается впервые (и при каждом переходе к другой записи), этот код выполняется и помещает соответствующее изображение в элемент управления Рисунок.

При использовании данного кода следует также применить обработку ошибок (см. разд. "Обработка ошибок" главы 17). Обработка ошибок важна, поскольку вы не можете быть уверены в том, что изображения не были перемещены или удалены, а если это произош­ло, вы заинтересованы в грамотном решении проблемы.

1   ...   42   43   44   45   46   47   48   49   ...   65


написать администратору сайта