Компонент Animate
Программа "Просмотр анимации" обеспечивает два режима просмотра: непрерывный и по кадрам. Кнопка Button1 используется как для инициализации процесса воспроизведения анимации, так и для его приостановки. Процесс непрерывного воспроизведения анимации инициирует процедура обработки события onclick на кнопке Пуск, которая присваивает значение true свойству Active. Эта же процедура заменяет текст на кнопке Button1 с "Пуск" на "Стоп".
Режим воспроизведения анимации выбирается при помощи переключателей RadioButton1 и RadioButton2. Процедуры обработки события Onclick на этих переключателях изменением значения свойства Enabled блокируют или, наоборот, делают доступными кнопки управления: активизации воспроизведения анимации (Button1), перехода к следующему (Button2) и предыдущему (Buttons) кадру. Во время непрерывного воспроизведения анимации процедура обработки события onckick на кнопке Стоп (Buttoni) присваивает значение false свойству Active и тем самым останавливает процесс воспроизведения анимации.
Листинг 4.1. Использование компонента Animate.
// обработка события OnCreate void__fastcall TForml::FormCreate(TObject *Sender) { TSearchRec sr; // содержит информацию //о файле, найденном функцией FindFirst // найдем AVI-файл в текущем каталоге if (FindFirst("*.avi",faAnyFile, sr) == 0) { Editl › Text = sr.Name; /* если анимация содержит звук, то при выполнении следующего оператора произойдет ошибка, т. к. компонент Animate обеспечивает воспроизведение только простой, не сопровождаемой звуком анимации */ try { Animatel › FileName = sr.Name; } catch (Exception &e) { return; } RadioButtonl › Enabled = true; RadioButton2 › Enabled = true; Buttonl › Enabled = true; } } // щелчок на кнопке Выбрать void __fastcall TForml::Button4Click(TObject *Sender) { OpenDialogl › InitialDir = ""; // открыть каталог, из которого // запущена программа OpenDialogl › FileName = "*.avi"; // вывести список AVI-файлов if (OpenDialogl › Execute()) { // пользователь выбрал файл и нажал кнопку Открыть // Компонент Animate может отображать только простую, // не сопровождаемую звуком анимацию. Поэтому // при выполнении следующей инструкции возможна ошибка try { Animatel › FileName = OpenDialogl › FileName; } catch (Exception &e) { Editl-XText = ""; // сделаем недоступными кнопки управления RadioButtonl › Enabled = false; RadioButton2 › Enabled = false; Buttonl › Enabled = false; Button2 › Enabled = false; Button3 › Enabled = false; // сообщение об ошибке AnsiString msg = "Ошибка открытия файла " + OpenDialogl › FileName + "ХпВозможно анимация сопровождается звуком."; ShowMessage(msg); return; }