Вызов анимированной заставки в Access

Источник: accessoft

В этой статье рассмотрим простой пример, как сделать свое приложение Access более привлекательным. Речь конечно же пойдет о спец. эффектах. Вообще, для того, чтобы при запуске базы данных вместо стандартной заставки с надписью "Access XXX ..." вывести любую свою картинку, достаточно поместить ее в формате BMP в ту же директорию и с тем же именем, что и файл базы данных. Например, для базы "C:\MyBase\base.mdb" нужен файл "C:\MyBase\base.bmp". Но сейчас рассмотрим процесс открытия приложения, и попробуем его "перехватить" и запустить анимированную заставку. В качестве последней будет выступать презентация PowerPoint.

Сначала создадим саму заставку - презентацию 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) нужно запускать приложение, удерживая Schift. Это так называемая "защита от дурака" в простейшем исполнении. Под "дураками" подразумеваются любопытные пользователи, которым интересно, что "внутри" программы, а так же наивные разработчики, думающие таким образом провести пользователей, и закрыть им доступ к окну Access. Schift уже давно не для кого не секрет, а вот чтобы нельзя было открыть при помощи Schift существует… "защита от Schift" - специальные программные модули, препятствующие этому, которые разумеется можно взломать другими программными модулями, которые чаще всего так и называют: "Взлом защиты от Schift". И тут уже все будет зависеть от уровня разработчиков: чей модуль "хитрее", тот и выиграл. Впрочем, мы отвлеклись, речь то ведь у нас была о запуске презентации 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. Этого хватает для "прогона" анимации.

Пример, как это все работает, Вы можете скачать ниже.


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=21449