Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
вызова метода Open. Некоторые методы компонента TMediaPlayer перечислены в таблице 5.
Таблица 5 – Методы компонента TMediaPlayer
Метод |
Описание |
|
|
procedure Back; |
Перемещает текущую позицию в носителе информации назад |
|
на количество кадров, содержащихся в свойстве Frames |
procedure Close; |
Закрывает связанное с компонентом устройство |
procedure Eject; |
Выгружает носитель информации из устройства. |
procedure Next; |
Перемещает текущую позицию носителя на начало следующей |
|
дорожки, а если устройство не имеет дорожек – в конец |
|
носителя |
procedure Open; |
Открывает мультимедийное устройство |
procedure Pause; |
Приостанавливает процесс воспроизведения или записи |
|
информации. Если устройство уже было приостановлено, |
|
восстанавливает процесс с помощью вызова метода Resume |
procedure PauseOnly; |
Приостанавливает процесс воспроизведения или записи |
|
информации. Если устройство уже было приостановлено, |
|
ничего не делает |
procedure Play; |
Начинает воспроизведение с позиции StartPos а если это |
|
свойство не установлено – с текущей позиции Position |
procedure Previous; |
Перемещает текущую позицию носителя на начало |
|
предыдущей дорожки, а если устройством имеет дорожек – в |
|
начало носителя. |
procedure Resume; |
Восстанавливает процесс записи или воспроизведения. |
|
Вызывается при повторном щелчке кнопке btPause. |
procedure Rewind; |
Перемещает текущую позицию носителя к положению, |
|
определяемому свойством Start. |
procedure Save; |
Сохраняет информацию в файле с именем FileName. |
procedure |
Начинает запись информации с текущей позиции или позиции |
StartRecording; |
StartPos. |
procedure Step; |
Перемещает текущую позицию в носителе информации вперед |
|
на количество кадров, содержащихся в свойстве Frames. |
procedure Stop; |
Прекращает запись или воспроизведение информации. |
События компонента TMediaPlayer представлены в таблице 6.
Таблица 6 – События компонента TMediaPlayer
Событие |
Описание |
|
|
EMPNotify = procedure(Sender: TObject; |
Возникает после щелчка на кнопке Button |
Button: TMPBtnType; var DoDefault: |
компонента. Если DoDefault=True, |
Boolean) of object; |
вызывается метод, связанный с этой кнопкой |
property OnClick: EMPNotify; |
|
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Событие |
Описание |
|
|
property OnNotify: PNotifyEvent; |
Возникает после завершения вызова одного |
|
из методов Back, Close, Eject, Next, Open, |
|
Pause, PauseOnly, Play, Previous, Resume, |
|
Rewind, StartRecording, Step или Stop, если |
|
свойство Notify имеет значение True |
EMPPostNotify = procedure (Sender: |
Если Wait=True, событие OnPostClick |
TObject; Button: TMPBtnType) of object; |
возникает только после завершения |
property OnPostClick: EMPPostNotify; |
соответствующей операции, вызванной |
|
событием OnClick, в противном случае – |
|
немедленно после события OnClick |
В качестве примера использования компонента TMediaPlayer рассмотрим программу мультимедиа проигрывателя.
На форму frmEasyPlayer поместите две панели (pnView, pnCommand). Установите значение свойства Align для компонента pnCommand равным alBottom, а для компонента pnView равным alClient.
Поместите на панель pnCommand компонент TMediaPlayer (mmPlayer). Установите значение свойства AutoSize компонента pnCommand равным True. Поместите на панель pnCommand компонент TBitBtn (btnOpen). Настройте вид компонента mmPlayer как показано на рисунке 12. Добавьте на форму компонент TOpenDialog (OpenDialog).
Рисунок 12 – Вид формы после добавления компонентов
Настройте свойство Filter компонента OpenDialog как показано на рисунке 13
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Рисунок 13 – настройка свойства Filter компонента OpenDialog
Добавьте в секцию public формы метод SetTitle. Этот метод служит для установки заголовка формы в зависимости от имени открытого файла. Тело метода приведено ниже.
procedure TfrmEasyPlayer.SetTitle(ATitle: string); begin
if ATitle<>'' then Caption:='Проигрыватель - ' + ATitle else Caption:='Проигрыватель';
end;
Добавьте в форму обработчики событий OnClick для компонента btnOpen и OnCreate для формы.
procedure TfrmEasyPlayer.FormCreate(Sender: TObject); begin
SetTitle(''); end;{FormCreate}
procedure TfrmEasyPlayer.btnOpenClick(Sender: TObject); begin
if OpenDialog.Execute then begin
try mmPlayer.FileName:=OpenDialog.FileName; mmPlayer.Open;
SetTitle(ExtractFileName(OpenDialog.FileName)); except
on Err:EMCIDeviceError do ShowMessage(Err.Message); else
ShowMessage('Неизвестная ошибка'); end;{except}
end;{if} end;{btnOpenClick}
Для того чтобы видеоизображение выводилось не в окно медиапрогрывателя, а на компонент pnView укажите его в свойстве Display компонента mmPlayer. Чтобы обеспечить масштабирование выводимого видеоизображения необходимо при изменении размеров панели pnView изменять значение свойства mmPlayer.DisplayRect. Создайте обработчик события OnResize для компонента pnView.
procedure TfrmEasyPlayer.pnViewResize(Sender: TObject); begin
//изменяем размер области для вывода изображений mmPlayer.DisplayRect:=pnView.ClientRect;
end;{pnViewResize}
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
Запустите программу, проверьте ее работоспособность. Вид окна работающей программы приведен на рисунке 14.
Рисунок 14 – Окно программы «EasyPlayer».
Обратите внимание на то, что будут проигрываться только те мультимедиа файлы, для которых в операционной системе установлены драйверы. Поэтому вызовы методов Open и Play компонента TMediaPlayer необходимо обязательно помещать в защищенную секцию исключения.
Иногда необходимо проиграть несколько файлов подряд, если использовать для этого код, приведенный ниже, то будет проигрываться только последний файл.
...
mmPlayer.FileName:=’file1.mp3’; mmPlayer.Open;
mmPlayer.Play;
mmPlayer.FileName:=’file2.mp3’; mmPlayer.Open;
mmPlayer.Play;
...
Создайте новый проект. Поместите на форму (frmSndList) компонент TMediaPlayer (mmPlayer). Установите значение свойства Visible компонента mmPlayer равным False. Добавьте обработчики событий OnCreate, OnKeyDown и OnDestroy для формы. Создайте обработчик события OnNotify для компонента mmPlayer. Листинг программы приведен ниже.
Листинг 3
unit UPlayer;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, MPlayer;
type
TfrmSndList = class(TForm)
Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»
mmPlayer: TMediaPlayer;
procedure mmPlayerNotify(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormDestroy(Sender: TObject); private
{Private declarations } public
{Public declarations }
//список для хранения списка mp3 файлов
SndList:TStringList;
//индекс текущего проигрываемого файла
CurFile:Integer;
end;
var frmSndList: TfrmSndList;
implementation
{$R *.dfm}
procedure TfrmSndList.mmPlayerNotify(Sender: TObject); begin
//если проигрыватель остановлен, //то запускаем следующий файл из списка if mmPlayer.Mode=mpStopped then
begin Inc(CurFile);//следующий файл
if CurFile<=SndList.Count-1 then begin
mmPlayer.FileName:=SndList.Strings[CurFile];
mmPlayer.Open;
mmPlayer.Play;
//устанавливаем заголовок формы
Caption:=SndList.Strings[CurFile]; end
else //список исчерпан закрываем программу
Halt(0); end;{if}
end;{mmPlayerNotify}
procedure TfrmSndList.FormCreate(Sender: TObject); var Search:TSearchRec;
begin
//создаем список
SndList:=TStringList.Create;
//ищем все файлы mp3 в текущем каталоге if FindFirst('*.mp3', 0, Search)=0 then
begin repeat
SndList.Add(Search.Name); until FindNext(Search)<>0;
CurFile:=0;//индекс первого файла для проигрывания end{if}
else CurFile:=-1; //нет файлов в списке FindClose(Search);