В этой статье рассмотрим простой пример, как сделать свое приложение Access более привлекательным. Речь конечно же пойдет о спец. эффектах. В ранее выпущенной статье «Автолинковка (автоприсоединение) таблиц при открытии приложения» уже показывался спец. эффект дефрагментация формы при закрытии – форма «рассыпалась на части». Сейчас рассмотрим процесс открытия приложения, и попробуем его «перехватить» и запустить анимированную заставку. В качестве последней будет выступать презентация PowerPoint. Сначала создадим саму заставку. Открываем PowerPoint, и выбираем в меню «Общие шаблоны» понравившиеся. Я, например, выбрал «Океан». Выделяем «Заголовок слайда» и пишем свой текст. Аналогично «Подзаголовок слайда». Форматирование такое же, как и Word. Теперь сделаем анимацию. Для этого выделяем текст, к которому хотим применить анимацию, и выбираем Показ слайдов – Настройка анимации – Добавить эффект. Далее, думаю, нет смысла объяснять. Осталось теперь только сохранить все это как презентацию (.pps) – например «Заставка.pps». Для запуска из Access полученного «шедевра» воспользуемся технологией ActiveX.
Технология ActiveX обеспечивает взаимодействие приложений – Автоматизацию (Automation), при которой одно приложение управляет работой другого. Чтобы начать работу с ActiveX – объектом, нужно объявить соответствующую переменную, создать сам объект и связать переменную с объектом. Одним из способов выполнения этой работы является использование спецификатора New в операторе объявления переменных:
Dim <имя переменной> As New <имя приложения.имя класса>
Однако более универсальным способом создания ActiveX – объектов является вызов специальных функций CreateObject и GetObject. Как правило, вызов этих функций помещается в правую часть оператора Set. В результате его выполнения объектное выражение возвращает ссылку на созданный объект, которая становится значением переменной. Синтаксис функции CreateObject:
CreateObject (“Имя_приложения.Имя_класса”)
Функция GetObject имеет дополнительный параметр путь, который задает полный путь к файлу, содержащему ActiveX – объект. Создадим пустую форму frmHide и создадим в ней процедуру открытие формы:
Private Sub Form_Open(Cancel As Integer) Dim ppApp As Object Set ppApp = CreateObject("Powerpoint.Application") ppApp.Visible = True ppApp.Presentations.Open CurrentProject.Path & "\Заставка.pps" End Sub
Как видно, полный путь к файлу презентации был получен при помощи CurrentProject.Path и имени файла. Если теперь запустить эту процедуру, то она в свою очередь запустит Powerpoint, а он покажет нам нашу заставку «Заставка.pps». Так как нам нужно, чтобы запуск происходил при открытии приложения, то запустим ее самым простым способом – через указания имени стартовой формы, в нашем случае это будет frmHide: Сервис – Параметры запуска – Вывод формы/страницы – frmHide. Заодно уберем все галочки, кроме «контекстные меню по умолчанию» - этим мы скроем почти все стандартные меню Access и само окно приложения, чтобы не мешало. Напомню, кто не знает: чтобы самому добраться до формы для редактирования (отобразить окно Access) нужно запускать приложение, удерживая Shift. Это так называемая «защита от дурака» в простейшем исполнении. Под «дураками» подразумеваются любопытные пользователи, которым интересно, что «внутри» программы, а так же наивные разработчики, думающие таким образом провести пользователей, и закрыть им доступ к окну Access. Shift уже давно не для кого не секрет, а вот чтобы нельзя было открыть при помощи Shift существует… «защита от Shift» – специальные программные модули, препятствующие этому, которые разумеется можно взломать другими программными модулями, которые чаще всего так и называют: «Взлом защиты от Shift». И тут уже все будет зависеть от уровня разработчиков: чей модуль "хитрее", тот и выиграл. Впрочем, мы отвлеклись, речь то ведь у нас была о запуске презентации Powerpoint. Итак, стартовую форму указали, окно Access свернули. Запускаем приложение. Появляется заставка, идет анимация и…все. Дело в том, что в здесь не хватает еще одного важного момента: так управление было передано Powerpoint, то теперь нужно из Powerpoint запустить Access! Можно создать аналогичную процедуру в Powerpoint, ведь там тоже, как и во всех офисных приложениях, поддерживается VBA. Но мы поступим по другому: пусть Access закроет Powerpoint и запустит вторую стартовую форму (теперь уже "настоящую стартовую"). Для этого воспользуемся свойством формы Таймер и создадим еще одну процедуру в форме frmHide:
Private Sub Form_Timer() Dim ppApp As Object Set ppApp = CreateObject("Powerpoint.Application") If ppApp.Visible = True Then ppApp.Quit DoCmd.Close acForm, Me.Form.Name DoCmd.OpenForm "frmStart" End If End Sub
Как видно, через нее закрывается приложение Powerpoint (ppApp.Quit), закрывается сама форма frmHide (потому я ее и назвал Hide) и открывается настоящая стартовая форма приложения – frmStart. Событие Таймер происходит с заданным интервалом (мс). Он задается в конструкторе формы frmHide – Интервал таймера. Я поставил 4500. Этого хватает для «прогона» анимации.
|