100 компонентів Delphi - Animate
Тепер розглянемо спосіб відтворення у програмі Delphi стандартних мультиплікацій Windows та файлів.avi— кліпів без звукового супроводу. Це дозволяє зробити компонентAnimate, розташований на сторінці Win32 бібліотеки.
Відкрийте нову програму, перенесіть на форму компонентAnimateі познайомтеся з ним.
Відтворюване ним зображення визначається однією з двох властивостей:FileNameабоCommonAVI. Перша з цих властивостей, як зрозуміло з його назви, дозволяє в процесі проектування або програмно задати ім'я файлу, що відтворюється. А властивістьCommonAVIдозволяє відтворювати стандартні мультиплікації Windows. Ця властивість оголошена так:
ТипTCommonAVIвизначає безліч зумовлених у Windows мультиплікацій типу копіювання файлів, пошуку файлів, видалення файлів тощо. Що означає кожне значення ви побачите з тестового додатку, який збудуєте трохи пізніше.
А поки встановіть значенняCommonAVI, наприклад, рівнимaviCopyFile. Це відповідає стандартному зображенню копіювання файлу. Відповідний початковий малюнок негайно з'явиться у вашій формі. ВластивістьRepetitionsкомпонентаAnimateвизначає кількість повторень відтворення кліпу. Якщо воно дорівнює0(значення за умовчанням), то відтворення повторюється знову і знову доти, доки не буде виконано методStop. При виконанні цього методу генерується подіяOnStop, яку можна використовувати, наприклад, щоб стерти зображення зробити його невидимим.
Якщо ж властивістьRepetitionsзадати більшим нуля, воно визначить кількість повторень кліпу. Задайте його, наприклад, рівним3. А тепер встановіть властивістьActiveкомпонентаAnimateуtrue. Ви побачите (рис. 4.21), що ще в процесі проектування ваша програма запрацює. Зображення оживе та кліп буде повторений 3 рази.
| Мал. 4.21Анімація копіювання файлу | ![]() |
Ви можете переглянути зображення по кадрах. Для цього клацніть правою кнопкою миші на компоненті і з спливаючого меню виберіть розділи Next Frame (наступний кадр) або Previous Frame (попередній кадр). Це дозволить вам вибрати фрагмент кліпу, якщо ви не бажаєте відтворювати кліп повністю. Відтворити фрагмент кліпу можна, встановивши відповідні значення властивостейStartFrame- початковий кадр відтворення, іStopFrame- останній кадр відтворення.
Відтворювати фрагмент кліпу можна і методомPlay, який визначений таким чином:
Метод відтворює задану послідовність кадрів кліпу відFromFrameдоToFrameвключно і відтворення повторюєтьсяCountразів. ЯкщоFromFrame = 1, відтворення починається з першого кадру. ЗначенняToFrameповинно бути не меншеFromFrameі не більше значення, що визначається властивістюFrameCount(властивість тільки для читання), що вказує на повну кількість кадрів у кліпі. ЯкщоCount = 0, то відтворення повторюється доти, доки буде виконано методStop.
ВиконанняPlayідентичне завданняStartFrameрівнимFromFrame,StopFrameрівнимToFrame,RepetitionsрівнимCountта подальшій установціActiveуtrue.
У компонентіAnimateпередбачені подіїOnClose,OnOpen,OnStartтаOnStop, що генеруються відповідно в моменти закриття та відкриття компонента, початку та закінченнявідтворення.
А тепер додайте додаток 3 кнопки (рис. 4.22). Перша з них (назвіть їїВWind) розпочинатиме процес відтворення по черзі всіх стандартних кліпів Windows. Друга кнопка (назвіть їїBStop) нехай завершує відтворення чергового кліпу. А третю кнопку (назвіть їїBFile) введемо для того, щоб показати, що компонент може відтворювати зображення із заданого файлу.avi. Щоб вибрати файл зображення, додайте на форму компонентOpenDialog(див. розділ 8.2) і задайте його фільтр (властивістьFilter) рівним
Тепер усі приготування закінчено і залишилося лише написати обробники подій. Код обробників може мати вигляд:
| Мал. 4.22Демонстрація можливостей компонентаAnimate | ![]() |
Обробник подіїOnClickкнопкиBWindзадає початкове значення властивостіCommonAVI, скидає лічильник на1, робить компонентAnimate1видимим та активізує його.
Обробник подіїOnClickкнопкиBStopзупиняє відтворення методомStop.
Обробник подіїOnStopкомпонентаAnimate1збільшує лічильник на1, залежно від значення лічильника завантажує компонент відповідний кліп Windows і активізує компонент. Якщо всі кліпи вже відтворені, компонент стає невидимим.

