C++ Builder - вопросы программирования




Листинг 4 1



Листинг 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; } Editl-XText = OpenDialogl->FileName; // отобразить имя файла RadioButtonl->Checked = true; // режим просмотра — непрерывно Buttonl->Enabled = true; // кнопка Пуск доступна Button2->Enabled = false; // кнопка Предыдущий кадр недоступна Button3->Enabled = false; // кнопка Следующий кадр недоступна RadioButtonl->Enabled = true; RadioButton2->Enabled = true; } } // щелчок на кнопке Пуск/Стоп void__fastcall TForml::ButtonlClick(TObject *Sender) { if (Animatel->Active) { // анимация отображается, щелчок на кнопке Стоп Animatel->Active = false; Buttonl-> Caption = "Пуск"; RadioButton2->Enabled = true; } else // щелчок на кнопке Пуск ( // активизировать отображение анимации Animatel->StartFrame = 1; // с первого кадра Animatel->StopFrame = Animatel->FrameCount; // по последний кадр Animatel->Active = true; Buttonl->Caption = "Стоп"; RadioButton2->Enabled = false; } } // выбор режима просмотра всей анимации void __fastcall TForml::RadioButtonlClick(TObject *Sender) { Buttonl->Enabled = true; // кнопка Пуск/Стоп доступна // сделать недоступными кнопки режима просмотра по кадрам Button2->Enabled = false; Button3->Enabled = false; Animatel->Active = false; } // выбор режима просмотра по кадрам void __fastcall TForml::RadioButton2Click(TObject *Sender) { Buttonl->Enabled = false; // кнопка Пуск/Стоп недоступна Button2->Enabled = true; // кнопка Следующий кадр доступна Button3->Enabled = false; // кнопка Предыдущий кадр недоступна // отобразить первый кадр Animatel->StartFrame =1; Animatel->StopFrame = 1; Animatel->Active = true; CFrame =1; // запомним номер отображаемого кадра } // щелчок на кнопке Следующий кадр void__fastcall TForml::Button2Click(TObject *Sender) { CFrame++; // отобразить кадр Animatel->StartFrame = CFrame; Animatel->StopFrame = CFrame; Animatel->Active = true; if (CFrame > 1) Button3->Enabled = true; if (CFrame == Animatel->FrameCount) // отобразили последний кадр Button2->Enabled = false; // кнопка Следующий кадр недоступна } // щелчок на кнопке Предыдущий кадр void__fastcall TForml::Button3Click(TObject *Sender) { if (CFrame == Animatel->FrameCount) // последний кадр Button2->Enabled = true; CFrame—; // отобразить кадр Animatel->StartFrame = CFrame; Animatel->StopFrame = CFrame; Animatel->Active = true; if (CFrame == 1) Button3->Enabled = false; // кнопка Следующий кадр недоступна }
 











Содержание  Назад  Вперед