Виклик анімованої заставки в access
У цій статті розглянемо простий приклад, як зробити свою програму access більш привабливою. Мова, звичайно ж, піде про спец. ефекти. Взагалі, щоб при запуску бази даних замість стандартної заставки з написом "access xxx . " вивести будь-яку свою картинку, достатньо помістити її у форматі bmp в ту ж директорію і з тим самим ім'ям, що і файл бази даних. Наприклад, для бази "c:mybasebase.mdb" потрібний файл "c:mybasebase.bmp". Але зараз розглянемо процес відкриття програми і спробуємо його "перехопити" і запустити анімовану заставку. Як остання виступатиме презентація powerpoint.
Спочатку створимо саму заставку – презентацію powerpoint. Відкриваємо powerpoint, і вибираємо в меню "Загальні шаблони", що сподобалися. Я, наприклад, вибрав "Океан". Виділяємо "Заголовок слайду" та пишемо свій текст. Аналогічно "Підзаголовок слайду". Форматування таке саме, як і word. Тепер зробимо анімацію – власне, тож слайд і називають презентацією. Для цього виділяємо текст, до якого хочемо застосувати анімацію, та вибираємо Показ слайдів – Налаштування анімації – Додати ефект. Далі, гадаю, немає сенсу пояснювати. Залишилося тепер лише зберегти все це як презентацію (.pps) – наприклад "Заставка.pps". Для запуску з access отриманого "шедевра" скористаємося технологією activex.
Проте більш універсальним способом створення activex - об'єктів є виклик спеціальних функцій createobject і getobject. Як правило, виклик цих функцій міститься у праву частину оператора set. В результаті його виконання об'єктний вираз повертає посилання на створений об'єкт, який стає значенням змінної. Синтаксис функції createobject:
Функція getobject має додатковий параметр шлях, який визначає повний шлях до файлу, що міститьactivex - об'єкт. Створимо порожню форму frmhide і створимо в ній процедуру відкриття форми:
private sub form_open(cancel as integer) dim ppapp як 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 як об'єкт set ppapp = createobject("powerpoint.application") якщо 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. Цього вистачає для прогону анімації.
Приклад, як це все працює, Ви можете завантажити нижче.