Delphi.int.ru — Портал программистов

Вход Регистрация | Забыли пароль?

События

Сегодня:
Вопросы0    Ответы0    Мини-форумы0


Последние:
Вопрос20.07, 15:06 / #6671
Ответ30.06, 12:52 / #6666
Новости30 апреля 2012


Сейчас онлайн:
На сайте — 10
На IRC-канале — 2

Ссылки

Написание простого медиа-проигрывателя (часть 1)

Простейший медиа-проигрыватель можно создать стандартными средствами Windows. Существуют модули, которые доступны из любого языка программирования - это ActiveX. Delphi в этом плане не исключение. Встроенный в систему Windows Media Player имеет собственный ActiveX-модуль, который мы легко можем использовать в своей программе. Правда, кардинально изменить в нём что-либо не получится. В данной статье я покажу пример, как использовать этот компонент.

Медиа-проигрыватель (1)

Для начала ActiveX-компонент (сокращённо AX) нужно интегрировать в оболочку Delphi. Делается это легко: открываем диалоговое окно Component - Import ActiveX Control. В разных версиях Delphi этот пункт меню может называться по-разному, но ключевым остаётся слово ActiveX. В открывшемся окне в списке компонент найдите строку Windows Media Player. Нажмите кнопку Install. В появившемся окне можно указать, в какой пакет следует установить компонент. Можно оставить всё по умолчанию и нажать ОК. После этого на вкладке ActiveX палитры компонент появится кнопка WindowsMediaPlayer. Теперь можно приступить к созданию проигрывателя.

Для начала поместите компонент на форму - щёлкните по его значку и затем по форме. Вы увидите знакомое изображение - изображение проигрывателя. Его внешний вид зависит от версии установленного в системе компонента. Примерный вид того, что вы увидите, изображён на рисунке 1.

Для начала давайте сделаем возможность открытия нужного файла. За путь к файлу, который нужно воспроизводить, отвечает свойство URL типа WideString (строка). Давайте сделаем для программы меню, куда и добавим нужный нам пункт. Поместите на форму TMainMenu (страница Standard). Дважды щёлкните по значку TMainMenu, лежащему на форме. Откроется дизайнер меню. Выделите единственный пункт в заголовке меню и в его свойстве Caption напишите "Файл". Затем щёлкните по созданному пункту и снизу появится ещё одна пустая строка. Там и введите название нашего пункта - "Открыть". Следующей строкой давайте создадим разделитель для меню - в свойстве Caption поставьте один-единственный символ - минус ("-"). Следующей строкой сделайте пункт "Выход". Ну вот, программа уже имеет меню, хотя и небольшое. Теперь нужно связать пункт меню с диалогом открытия файла. Найдите компонент TOpenDialog на странице Dialogs и поместите его на форму. Активируйте свойство Filter и нажмите на кнопку с тремя точками ("..."). В появившемся окне введите желаемые типы файлов. В поле Filter Name нужно ввести описание типов файлов, а в поле Filter - сам фильтр. Пример на рисунке 2.

Чтобы с компонентом было удобно работать, измените его свойство Name на MediaPlayer.

Выделите компонент и перейдите в окно Object Inspector. Свойств (Properties) у компонента не очень много, а вот событий (Events) гораздо больше. Но мы используем лишь некоторые из них.

Для удобства, компонент MainMenu1 переименуем в MainMenu, а OpenDialog1 - в OpenDialog.

Пришло время запрограммировать пункт меню "Открыть". Откройте дизайнер меню и дважды щёлкните по нужному пункту - откроется редактор кода. В этом месте следует написать:

if OpenDialog.Execute then 
  MediaPlayer.URL:=OpenDialog.FileName;
Медиа-проигрыватель (2)

Метод Execute открывает диалог и, если пользователь не нажал "Отмена", то функция возвращает значение True, а в FileName записывается путь к выбранному файлу. Затем мы присваиваем свойству URL проигрывателя выбранный файл. Запустите программу и попробуйте открыть файл. Всё должно работать, файл должен воспроизводиться.

Теперь давайте приведём окно проигрывателя к нормальному виду. Сам проигрыватель нужно растянуть на всю ширину окна - измените его свойство Align на alClient. Саму форму стоит сделать поменьше, т.к. наш проигрыватель пока что воспроизводит только аудио-файлы. На мой взгляд, для формы можно установить ширину (Width) равной 300, а высоту (Height) - 200. Наконец, можно изменить вид окна и установить BorderStyle в значение bsSizeToolWin, а заголовок (Caption) - "Simple Media Player".

Теперь запрограммируем пункт "Выход" - для этого следует написать в его обработчике всего одну строку:

Self.Close;

Этот метод закрывает текущую форму (Self - объект, выбранный по умолчанию, форма) и завершает приложение.

Теперь нужно сделать в меню элементарные команды управления воспроизведением - Start, Stop, Pause. Конечно, в проигрывателе и без того есть существующие кнопки, но они должны иметь своё отражение и в меню.

Для начала добавьте в заглавную строку меню (туда, где "Файл") пункт "Управление". Затем добавьте два пункта - "Старт / Стоп" и "Пауза". Запрограммировать эти команды легко. Для управление воспроизведением служит набор методов Controls, а узнать текущее состояние проигрывателя можно из свойства PlayState. Вот как выглядит обработчик пункта "Старт / Стоп":

Медиа-проигрыватель (3)
if MediaPlayer.PlayState = wmppsPlaying then 
  MediaPlayer.Controls.Stop
else 
  MediaPlayer.Controls.Play;

А вот обработчик "Паузы":

if MediaPlayer.PlayState =wmppsPlaying then 
  MediaPlayer.Controls.Pause;

Запустите программу и проверьте её работоспособность.

Как видите, мы создали сравнительно простой, но рабочий проигрыватель. В следующий раз мы продолжим его разработку. Примерное изображение окна программы после выполнения всех действий, описанных в статье, показано на рисунке.

Автор: Ерёмин А.А.

Статья добавлена: 16 февраля 2006

Следующая статья: Написание простого медиа-проигрывателя (часть 2) »

Рейтинг статьи: 3.75 Голосов: 4 Ваша оценка:

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.


Статьи, похожие по тематике

 

Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:

Ссылка для форумов (BBCode):

Быстрая вставка ссылки на статью в сообщениях на сайте:
{{a:17}} (буква a — латинская) — только адрес статьи (URL);
{{статья:17}} — полноценная HTML-ссылка на статью (текст ссылки — название статьи).

Поделитесь ссылкой в социальных сетях:


Комментарии читателей к данной статье

maxwallaby
Репутация: нет

maxwallaby (25 мая 2011, 01:51):

Не OpenPictureDialog, а OpenDialog использовать надо!
Вы в type указали одно, а в процедуре TForm1.N2Click указываете на совершенно иной, несуществующий объект.
Будьте внимательны!

....
type
TForm1 = class(TForm)
WindowsMediaPlayer: TWindowsMediaPlayer;
MainMenu: TMainMenu;
OpenDialog: TOpenDialog; {- вот так эту строчку записать надо}
N1: TMenuItem;
N2: TMenuItem;
....
WAKA-WAKA
Репутация: нет

WAKA-WAKA (25 мая 2011, 00:58):

У меня все заработало с первого раза.
И получилось реализовать плейлист.
Loki05
Репутация: нет

Loki05 (29 марта 2011, 16:20):

И почему кнопки вперед, назад не активны?
Loki05
Репутация: нет

Loki05 (29 марта 2011, 16:19):

А как сюда сделать плейлист?
maxwallaby
Репутация: нет

maxwallaby (21 декабря 2010, 17:17):

Ну так укажите программе с чем конкретно работать надо.
В частности не OpenPictureDialog, а OpenPictureDialog1
Тоже самое с MediaPlayer. Нужно указывать с каким конкретно компонентом работаете.
И к тому-же, если не ошибаюсь, то надо не OpenPictureDialog а OpenDialog, естественно с единицей в конце (OpenDialog1)
В остальном действуйте по готовому коду.
Удачи!
Ерёмин А.А.
Репутация: +40

Ерёмин А.А. (1 декабря 2010, 11:10):

Текст ошибки какой?
Кузнецов Алексей
Репутация: нет

Кузнецов Алексей (1 декабря 2010, 02:05):

Нажимаю запустить выдаёт ошибку в строчке
if OpenDialog.Execute then
Ерёмин А.А.
Репутация: +40

Ерёмин А.А. (29 ноября 2010, 22:10):

Что именно не так? Вроде выглядит всё точно так же, как и в статье.
Кузнецов Алексей
Репутация: нет

Кузнецов Алексей (28 ноября 2010, 23:57):

я впервый раз пробую сделать что то подобное и у меня неполучилось хотя внешний вид как на картинке а вот с кодом чет нетак скажите что unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtDlgs, OleCtrls, WMPLib_TLB;

type
TForm1 = class(TForm)
WindowsMediaPlayer: TWindowsMediaPlayer;
MainMenu: TMainMenu;
OpenPictureDialog: TOpenPictureDialog;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Eghfdktybt1: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.N2Click(Sender: TObject);
begin
if OpenDialog.Execute then
MediaPlayer.URL:=OpenDialog.FileName;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
Self.Close;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
IF
MediaPlayer.PlayState = wmppsPlaying Then
MediaPlayer.Controls.Stop
Else
MediaPlayer.Controls.Play;
end;

procedure TForm1.N6Click(Sender: TObject);
begin
IF
MediaPlayer.PlayState = wmppsPlaying Then
MediaPlayer.Controls.Stop
Else
MediaPlayer.Controls.Play;
end;

procedure TForm1.N7Click(Sender: TObject);
begin
IF
MediaPlayer.Playstate =wmppsPlaying Then
MediaPlayer.Controls.Pause;
end;

end.

Оставлять комментарии к статьям могут только зарегистрированные пользователи.