Листинг 5.7.
Процедура вывода или обновления индикаторов
procedure TSoundPlayerForm.UpdateViewTime;
var
//Длина файла и позиция в файле
leng, posit: longint;
begin
//Находим длину воспроизводимого файла
leng := mdpSoundPlayer.Length;
//Находим позицию в воспроизводимом файле
posit := mdpSoundPlayer.Position;
//Преобразуем время в строку
lbMainTime.Caption := FileLangToStr(posit);
//Устанавливаем имя файла
lbFileName.Caption := mdpSoundPlayer.FileName;
end;
Как можно заметить из листинга 5.7, после получения позиции в файле и его имени данные о времени воспроизведения и путь к файлу попадают на индикаторы lbMainTime и lbFileName соответственно.
Открытие и загрузка файла в мультимедийный компонент происходит при выполнении кода из листинга 5.8. Кроме того, обработчик вызывает известную нам процедуру UpdateViewTime и включает таймер (tmTimer. Enabled:= true).
Листинг 5.8.
Открытие файла
procedure TSoundPlayerForm.bnOpenFileClick(Sender: TObject);
begin
if opdOpenDialog.Execute=true then
begin
//Открываем файл
mdpSoundPlayer.FileName := opdOpenDialog.FileName;
mdpSoundPlayer.Open;
//Устанавливаем значения в индикаторах
UpdateViewTime;
//Включаем таймер
tmTimer.Enabled := true;
end;
end;
Процедура обработки срабатывания таймера заключается в вызове функции обновления значений индикаторов (UpdateViewTime) (листинги 5.9 и 5.10).
Листинг 5.9.
Событие таймера
procedure TSoundPlayerForm.tmTimerTimer(Sender: TObject);
begin
//Обновление значений экрана
UpdateViewTime;
end;
Листинг 5.10.
Обработчик активизации формы
procedure TSoundPlayerForm.FormActivate(Sender: TObject);
begin
//Временное выключение таймера
tmTimer.Enabled := false;
//Задание значений
lbMainTime.Caption := \'00:00\
lbFileName.Caption := \'no file…\
// Установка фильтров для диалога
opdOpenDialog.Filter :=
\'MP3 music (*.mp3)|*.MP3|Wav files (*.wav)|*.WAV\
end;
Перемотка осуществляется при помощи двух кнопок. Для перемотки вперед на десять секунд необходимо нажать», назад – «(листинги 5.11 и 5.12).
Листинг 5.11.
Перемотка вперед
procedure TSoundPlayerForm.bnNextStClick(Sender: TObject);
begin
if mpCanPlay in mdpSoundPlayer.Capabilities then
begin
if (mdpSoundPlayer.Position+perem)<=mdpSoundPlayer.Length then
mdpSoundPlayer.Position := mdpSoundPlayer.Position + perem
else
mdpSoundPlayer.Position := mdpSoundPlayer.Length;
mdpSoundPlayer.Play;
end;
end;
Листинг 5.12.
Перемотка назад
procedure TSoundPlayerForm.bnPrevStClick(Sender: TObject);
begin
if mpCanPlay in mdpSoundPlayer.Capabilities then
begin
if mdpSoundPlayer.Position>=perem then
mdpSoundPlayer.Position := mdpSoundPlayer.Position – perem
else
mdpSoundPlayer.Position := 0;
mdpSoundPlayer.Play;
end;
end;