На этом шаге мы рассмотрим компонент TAnimate.
Компонент TAnimate (Анимация AVI) позволяет организовать в форме небольшую анимацию - воспроизвести клип в формате AVI без воспроизведения звука. В зависимости от цели применения компонент TAnimate можно настроить заранее на этапе проектирования или динамически во время работы программы.
Рассмотрим свойства компонента TAnimate.
Свойство | Описание |
---|---|
property Active: Boolean; | Разрешает/запрещает демонстрацию клипа. Во время демонстрации содержит значение True |
property AutoSize: Boolean; | Если содержит значение True, компонент автоматически устанавливает свои размеры так, чтобы полностью вместить изображение кадра |
property Center: Boolean; | Центрирует изображение кадра в границах компонента по горизонтали и по вертикали |
type TCommonAVI = (aviNone, aviFindFolder, aviFindFile, aviFindComputer, aviCopyFiles, aviCopyFile, aviRecycleFile, aviEmptyRecycle, aviDeleteFile); property CommonAVI: TCommonAVI; |
Задает один из стандартных видеоклипов, входящих в библиотеку SHELL32.DLL. Значения свойства:
|
property FileName: TFileName; | Связывает компонент с AVI-файлом |
property FrameCount: Integer; | Содержит количество кадров, показанных с начала демонстрации клипа |
property FrameHeight: Integer; | Высота в пикселях одного кадра клипа |
property FrameWidth: Integer; | Ширина клипа |
property Open: Boolean; | Содержит значение True, если компонент связан с AVI-клипом и готов к работе |
property Repetitions: Integer; | Определяет количество повторений клипа. Если 0, клип повторяется до тех пор, пока свойство Active содержит значение True |
property ResName: String; | Определяет имя ресурса с клипом в ресурсном файле |
property StartFrame: SmallInt; | Содержит номер начального кадра демонстрации (нумерация кадров начинается с 1) |
property StopFrame: SmallInt; | Содержит номер конечного кадра демонстрации (нумерация кадров начинается с 1) |
property Timers: Boolean; | Разрешает/запрещает синхронизацию по таймеру. Если содержит значение True, демонстрация синхронизируется сигналами таймера. Если содержит значение False, для демонстрации используется независимый поток команд |
property Transparent: Boolean; | Если содержит значение True, фон клипа не накладывается на фон компонента |
Рис.1. Стандартные видеоклипы, определяемые свойством CommonAVI
Методы компонента перечислены в таблице 2.
Метод | Описание |
---|---|
procedure Play (FromFrame, ToFrame: Word; Count: Integer); | Демонстрирует Count раз подряд фрагмент клипа, начиная с кадра FromFrame по ToFrame включительно (нумерация кадров начинается с 1) |
procedure Reset; | Восстанавливает исходное состояние компонента. Свойство Open вновь становится равным значению True, но свойство Active=False |
procedure Seek (Frame: SmallInt); | Пропускает (не показывает) кадр с номером Frame (нумерация кадров начинается с 1) |
procedure Stop; | Прекращает показ клипа |
События компонента TAnimate перечислены в таблице 3.
Событие | Описание |
---|---|
property OnClose: TNotifyEvent; | Возникает при установке значения False в свойство Open |
property OnOpen: TNotifyEvent; | Возникает при установке значения True в свойство Open |
property OnStart: TNotifyEvent; | Возникает в момент начала демонстрации |
property OnStop: TNotifyEvent; | Возникает в момент прекращения демонстрации |
Для запуска клипа можно использовать следующий обработчик щелчка кнопки:
procedure TForm1.Button1Click(Sender: TObject); begin Animate1.Open := True; Animate1.Active := True; end;
Разумеется, посмотреть фильм, если даже файл с фильмом имеет расширение .avi, вы не сможете. Просматривать можно только специально подготовленные клипы.
Если вы захотите посмотреть компонент в действии (рис.1), выполните следующее:
Рис.2. Демонстрация компонента
procedure TForm1.BitBtnlClick(Sender: TObject); begin Animate1.FileName := 'cool.avi'; // Указываем файл с клипом. Animate1.Active := True; // Запускаем клип. ProgressBar1.Show; // Показываем ProgressBar. Timer1.Enabled := True; // Включаем таймер. end;
procedure TForm1.Timer1Timer(Sender: TObject) ; begin ProgressBar1.Position := ProgressBar1.Position + 1; if ProgressBar1.Position >= ProgressBar1.Max then begin Timer1.Enabled := False; // Выключаем таймер. ProgressBar1.Position := 0; // Готовим новый запуск. ProgressBar1.Hide; // Прячем ProgressBar. Animate1.Stop // Останавливаем клип. end; end;
На следующем шаге мы рассмотрим компонент TDateTimePicker.