TMediaPlayer - медиаплейер.
Компонент TMediaPlayer представляет собой набор кнопок (рис. 18.36), предназначенных для управления различными мультимедийными устройствами (компакт-дисками, звуковыми картами и т. п.).
Рис. 18.36 . Кнопки компонента TMediaPlayer
Если ваш компьютер оснащен звуковой картой, вставьте этот компонент в пустую форму, в его свойство FileName поместите название любого файла с расширением WAV (из каталога с: | winsows | media), установите в свойство Autoopen компонента значение True и запустите программу - после щелчка мышью по кнопке вы услышите звучание выбранного музыкального фрагмента. Как видите, использование компонента предельно просто. Он автоматически распознает тип мультимедийного устройства по расширению файла и берет на себя управление этим устройством. Разумеется, в каждый момент времени компонент может управлять лишь одним устройством, однако с помощью изменения содержимого FileName или явно с помощью свойства DeviceType программа может менять устройство, связанное с компонентом.
Каждая кнопка компонента имеет собственное имя, позволяющее программисту сделать какую-либо кнопку невидимой или недоступной. В следующей таблице приводится имя и назначение каждой кнопки (под носителем информации подразумеваются файлы и физические устройства, которые могут служить источником или приемником информации).
btStop
|
Останавливает запись или воспроизведение
|
btNext
|
Позиционирует устройство на следующую дорожку или в конец носителя информации, если устройство не имеет дорожек
|
btPrev
|
Позиционирует устройство на предыдущую дорожку или в начало носителя информации, если устройство не имеет до
|
btStep
|
рожек Позиционирует устройство на один блок кадров ближе к концу носителя информации. Количество кадров в блоке
|
btBack
|
содержится в свойстве Frames компонента Позиционирует устройство на один блок кадров ближе к началу носителя информации
|
btRecord
|
Начинает запись в носитель информации
|
btEject
|
Освобождает устройство от носителя информации
|
btPlay
|
Запуск
|
btPause
|
Пауза
|
property AutoEnable: Boolean;
|
Разрешает/запрещает автоматическое определение доступных и запрещенных кнопок
|
property AutoOpen: Boolean;
|
Разрешает/запрещает автоматический старт записи/воспроизведения в момент создания формы, в которую вставлен компонент
|
property AutoRewind: Boolean;
|
Разрешает/запрещает автоматическую
“перемотку” носителя информации в момент начала записи или воспроизведения.
Игнорируется, если устройство имеет дорожки или если установлены значения в свойства startpos и EndPos
|
TMPDevCaps = (mpCanStep, mpCanEject, mpCanPlay, mpCanRecord,
mpUsesWindows);
TMPDevCapsSet = set of
TMPDevCaps;
|
Содержит возможности устройства, связанного с компонентом mpCanStep, - может смещать носитель на кадр вперед или назад (устройство типа Animation, AVI Video, Digital Video, Overlay, или VCR); mpCanEject - может автоматически удалять носитель из устройства; mpCanPlay - может воспроизводить информацию; mpCanRecord - может записывать информацию; mpUsesWindows - может использовать окно для отображения процесса
|
property Capabilities: TMPDevCap
sSet; TMPBtnType = (btPlay, btPause, btStop, btNext, btPrev, btStep,
btBack, btRecord, btEject);
|
Кнопки, перечисленные в этом свойстве, будут использовать умалчиваемые цвета, не перечисленные кнопки будут черно-белыми.
|
TButtonSet = set of TMPBtnType;property ColoredButtons: Tbutton Set;
|
По умолчанию множество ColoredButtons содержит все кнопки
|
property DeviceID: Word;
|
Содержит Windows-идентификатор устройства, связанного с компонентом. Доступно только для чтения
|
TMPDeviceTypes = (dtAutoSelect,
dtAVIVideo, dtCDAudio, dtDAT,
dtDigitalVideo, dtMMMovie,
dtOther, dtOverlay, dtScanner, dtSequencer, dtVCR, dtVideodisc,
dtWaveAudio);
property DeviceType: TMPDevice
Types;
|
Содержит тип устройства. Если Device-
Type" dtAutoSelect, тип определяется
автоматически по расширению файла в свойстве FileName. Каждое мультимедийное устройство в момент инсталляции указывает в файле system. ini, файлы с какими расширениями оно поддерживает
|
property Display: TWinContrn:
|
Содержит ссылку на окно для устройств, которые могут его использовать в процессе записи/воспроизведения
|
property DisplayRect: TRect;
|
Содержит область окна Display, которое устройство может использовать для отображения процесса записи/воспроизведения. Для улучшения процесса отображения рекомендуется в DisplayRect указывать умалчиваемые размеры(задаются координатами 0,0 для правого нижнего угла)
|
property EnabledButtons: TButtonSet;
|
Содержит множество доступных кнопок (тип TButtonSet описан выше для свойства ColoredButtons)
|
property EndPos: Longint;
|
Содержит положение носителя информации в момент прекращения записи или воспроизведения. Переустановка значения приводит к повторению записи или воспроизведения
|
property Error: Longint;
|
Содержит код ошибки. Доступно только для чтения
|
property ErrorMessage: String;
|
Содержит сообщение об ошибке. Доступно только для чтения
|
property FileName: String;
|
Содержит имя читаемого или записываемого файла
|
property Frames: Longing;
|
Определяет количество кадров, пропускаемых при выполнении методов step или Back
|
property Length: Longint;
|
Содержит текущую длину носителя информации. Доступно только для чтения
|
TMPModes = (mpNotReady,-ipStopped, mpPlaying, mpRecord-
ing, mpSeeking, mpPaused,
-npOpen) ;
property Mode: TMPModes;
|
Показывает текущее состояние мультимедийного устройства: mpNotReady - не готово; mpStopped - остановлено; mpPlaying -
воспроизводит информацию; mpRecording -записывает информацию; mpSeeking -
перемещает носитель информации;
mpPaused - Приостановлено; mpOpen - от крыто. Доступно только для чтения
|
property Notify: Boolean;
PNotifyValues = (nvSuccessful,
Superseded, nvAborted, nvFailre);
|
Содержит True, если методы Back, Close, Eject, Next, Open, Pause, PauseOnly, Play, Previous, StartRecording, Resume, Rewind, Step и Stop будут создавать событие OnNotify
Содержит результат последней команды, создающей событие OnNotify: nvSuccessful - выполнена успешно; nvSuperseded
|
property NotifyValue: TMPNotify;
Values;
|
заменена другой командой; nvAborted досрочно прервана; nvFailure - завершилась ошибкой. Доступно только для чтения
|
property Position: Longint;
|
Содержит текущую позицию носителя информации
|
property Shareable: Boolean;
|
Разрешает/запрещает другим компонентам и программам использовать устройство, связанное с данным компонентом
|
property Start: Longing;
|
Содержит позицию от начала носителя, с которой начинается запись или воспроизведение. Определяется в момент открытия устройства и доступно только для чтения
|
property StartPos: Longint;
|
Содержит текущую позицию от начала носителя, с которого начинается запись или воспроизведение
|
TMPTimeFormats = (tfMilliseconds,
tfHMS, tfMSF, tfFrames,tfSMPTE24, tfSMPTE25, tfSMPTESO,tfSMPTE30Drop, tfBytes, tfSam ples, tfTMSF);property TimeFormat: TMPTimeFor mats;
|
Определяет формат представления данных в свойствах StartPos, Length, Position, Start и Endpos (см. пояснения ниже)
|
property TrackLength[TrackNum: Integer]: Longint;
|
Возвращает длину (в формате TimeFormat) дорожки с индексом TrackNum. Доступно только для чтения
|
property TrackPosition[TrackNum:
Integer]: Longint
|
Возвращает стартовую позицию (в формате
TimeFormat) дорожки С индексом TrackNum.
Доступно только для чтения
|
property Tracks: Longint;
|
Содержит количество дорожек в открытом
устройстве. Доступно только для чтения
|
property VisibleButtons: TButtonSet;
|
Содержит множество видимых кнопок (тип TButtonSet описан выше для свойства ColoredButtons)
|
property Wait: Boolean;
|
Если содержит True, управление возвращается в программу только после завершения перехода устройства в другое состояние, связанное с методами Back, Close, Eject, Next, Open, Pause, PauseOnly, Play, Previous, StartRecording, Resume, Rewind, Step или Stop
|
Если свойство AutoEnabie имеет значение True, компонент автоматически по типу устройства или расширению файла и значению свойства Mode определяет, какие кнопки будут доступны пользователю. Если AutoEnabie=Faise, доступными будут только те кнопки, которые входят в множество EnabiedButtons. Множество Enabied-
Buttons игнорируется, если AutoEnable=True.
Свойство AutoRewind игнорируется, если устройство имеет дорожки или если процесс записи/воспроизведения вызван изменением значения в свойстве StartPos или Endpos.
Положение носителя В свойствах StartPos, Length, Position, Start и EndPos В Зависимости от значения свойства TimeFormat должно интерпретироваться следующим образом (отсчет ведется от начала носителя информации):
tfMilliseconds
|
Миллисекунды в диапазоне от 0 до 4 294 967 295 Часы, минуты, секунды.
|
tfHMS
|
Занимают в порядке перечисления по одному байту начиная с младшего. Старшин байт Longint не используется
|
tfMSF
|
Минуты, секунды и кадры. Занимают в порядке перечисления по одному байту начиная с младшего. Старший байт Longint не используется
|
tfFrames
|
Кадры в диапазоне от 0 до 4 294 967 295
|
tfSMPTE24
|
Часы, минуты. секунды и количество блоков по 24 кадра в секунду. Занимают в порядке перечисления по одному байту начиная с младшего
|
tfSMPTE25
|
Часы, минуты, секунды и количество блоков по 25 кадров в секунду
|
tfSMPTE30
|
Часы, минуты, секунды и количество блоков по 30 кадров в секунду
|
tfSMPTE30Drop
|
Часы, минуты, секунды и количество пропущенных блоков по 30 кадров в секунду
|
tfBytes
|
Байты в диапазоне от 0 до 4 294 967 295
|
tfSamples
|
Количество условных блоков информации в диапазоне от 0 до 4294967295
|
tfTMSF
|
Дорожки, минуты, секунды и кадры. Занимают в порядке перечисления по одному байту начиная с младшего
|
Свойство TimeFormat недоступно из окна Инспектора объектов и устанавливается автоматически при открытии мультимедийного устройства методом open. В связи с этим значения в свойствах StartPos, Position и EndPos могут устанавливаться, а в свойствах Length, Start, TrackLength И TrackPosition Становятся действительными только после вызова СPеn.
procedure AutoButtonSet(Btn: TMPBtnType); dynamic;
|
Реализует разрешение/запрещение кнопок компонента при установке в свойство AutoEnable значения True Перемещает текущую позицию в носителе информации назад на количество кадров, содержащихся В свойстве Frames
|
procedure Back;
|
По умолчанию вызывает обработчик события OnClick.
|
procedure Click(Button: TMPBtnType; var DoDefault: eoolean); dynamic ;
|
Предназначен для перекрытия в потомках
|
procedure Close;
|
Закрывает связанное с компонентом устройство
|
procedure DoNotify; dynamic;
|
По умолчанию вызывает обработчик события OnNotify. Предназначен для перекрытия в потомках
|
procedure Eject;
|
Выгружает носитель информации из устройства
|
procedure MMNotify(var Message: TMessage); message :MCINOTIFY;
|
Реализует отклик на сообщение Windows мм mcinotify. По умолчанию вызывает метод DoNotify
|
procedure Next;
|
Перемещает текущую позицию носителя на начало следующей дорожки, а если устройство
не имеет дорожек - в конец носителя
|
procedure Notification ( AComponent: TComponent; Operation:
TOperation); override;
|
Извещает компонент AComponent о том, что завершилась операция Operation
|
procedure Open;
|
Открывает мультимедийное устройство
|
procedure Pause;
|
Приостанавливает процесс воспроизведения или записи информации. Если устройство уже было
приостановлено, восстанавливает процесс с помощью вызова метода Resume
|
procedure PauseOnly;
|
Приостанавливает процесс воспроизведения
или записи информации. Если устройство уже было приостановлено, ничего не делает
|
procedure Play;
|
Начинает воспроизведение с позиции StartPos, а если это свойство не установлено - с текущей позиции position
|
procedure PostClick (Button:
TMPBtnType); dynamic;
|
Реализует отклик на событие OnPostClick. По умолчанию вызывает соответствующий обработчик события
|
procedure Previous;
|
Перемещает текущую позицию носителя на начало предыдущей дорожки, а если устройство не имеет дорожек - в начало носителя
|
procedure Resume;
|
Восстанавливает процесс записи или воспроизведения. Вызывается при повторном щелчке по кнопке btPause
|
procedure Rewind;
|
Перемещает текущую позицию носителя к положению, определяемому свойством Start
|
procedure Save;
|
Сохраняет информацию в файле с именем FileName
|
procedure StartRecording;
|
Начинает запись информации с текущей позиции или позиции StartPos
|
procedure Step;
|
Перемещает текущую позицию в носителе информации вперед на количество кадров, содержащихся В свойстве Frames
|
procedure Stop;
|
Прекращает запись или воспроизведение информации
|
Для компонента определены следующие события:
|
EMPNotify = procedure (Sender:
TObject; Button: TMPBtnType;
var DoDefault: Boolean) of object;
property OnClick: EMPNotify;
|
Возникает после щелчка по кнопке Button компонента. Если DoDefault=True, вызывается метод, связанный с этой кнопкой
|
property OnNotify: TNotifу Event;
|
Возникает после завершения вызова одного из методов Back, Close, Eject, Next, Open, Pause, PauseOnly, Play, Previous, Resume, Rewind, StartRecording, Step или Stop,если свойство Notify имеет значение True
|
EMPPostNotify = procedure
(Sender: TObject; Button: TMPBtnType) of object;
property OnPostClick: EMPPost-Notify;
|
Если wait=True, событие OnPostClick возникает только после завершения соответствующей операции, вызванной событием OnClick, в противном случае - немедленно после OnClick
|
Примечание
Иногда требуется воспроизвести короткий звуковой сигнал для привлечения внимания пользователя программы - например, после завершения длительного , по времени процесса- обновления данных. Стандартная для Delphi процедура без параметров Веер извлекает сигнал из системного динамика только в том случае, если ПК не оснащен звуковой картой. С другой стороны, мощные возможности компонента TMediaPlayer кажутся излишними для решения этой задачи на ПК, оснащенных звуковой картой. В этом случае может пригодиться API-функция MessageBeep, с помощью которой Windows 32 озвучивает стандартниге диалоговые окна. Единственным параметром обращения к ней является один из следующих идентификаторов стандартного звука: mb_IconAsfcerisk, mb_IconExcla-mation, mb_IconHand, mb IconQuestion, mb Ok. Обращение с параметром $ffffffff игнорирует звуковую карту и извлекает “бип” из системного динамика. Сразу после обращения функция возвращает управление программе и воспроизводит звук асинхронно.
Значительно более богатыми возможностями в этом отношении имеет, API-функция PlaySound, которая способна воспроизводить любые звуковые клипы.
Заголовок функции:
function PlaySound(pszSound: PChar; hmod: HINST;
fdw.Sound: Cardinal): .Boolean;
3десь pszSound - имя воспроизводимого файла; hmod - указывает Экземпляр программы, если звук берется из ресурсного файла ( в противном случае содержит 0); fdwSound - параметр, уточняющий воспроизведение. Его значениями могут быть: snd_async звук воспроизводится асинхронно (функция возвращает управление сразу после обращения к ней); end loop звук воспроизводится постоянно до тех пор, пока не будет .вызвана та же функция с параметром pszSound=0;
SND_NOSTOP функция пытается воспроизвести звук, если устройство не занято; в противном случае не воспроизводит ничего; если устройство занято, но этот параметр не указан, функция прервет воспроизведение старого звука и начнет воспроизведение нового;
SND_NOWAIT если устройство занято, функция не будет воспроизводить новый звук;
SND_PORGE. прекращает, воспроизведение всех звуков для данной задачи;
SND SYNC воспроизводит звук синхронно и возвращает управление только после полного его воспроизведения.
назад - Вперёд
|