Лекция 2 «Первые простые программы».
Медиа-плеер.
Сейчас мы разработаем медиа-плеер, с помощью которого можно будет просматривать видео-файлы популярных форматов (включая фильмы) и слушать музыку (формат.mp3,.wav и т.д.).
1. Загрузите систему визуального программирования Delphi. Для запуска системы визуального программирования Delphi щелкают на пиктограмме Delphi или с помощью главного меню выбирают Пуск => Программы => Borland Delphi 7 => Delphi 7. В результате на экране откроются 5 окон:
ü главное окно Delphi 7 - Projectl, где находятся панель инструментов, палитра компонентов и главное меню.
ü окно инспектора объектов Object Inspector со значениями свойств активного объекта,
ü окно формы (Forml), в котором будут приведены результаты работы будущей программы,
ü окно дерева объектов (Object Tree View)
ü окно проводника кода Code Explorer совместно с окном редактора кода (Unitl.pas).
2. Создайте новый проект приложения: выполните команду меню File ðNew ð Application.
2.1. Разработка формы.
Форма будет небольшой, поскольку сам видео-ролик будет воспроизводиться в новом окне, а для организации прослушивания музыки много места не потребуется
Присвойте значения некоторым свойствам формы Forml согласно таблице.
Свойство | Значение | Пояснение |
Caption | Медиа-плеер | Заголовок формы |
Height | Высота формы | |
Width | Ширина формы | |
Position | poScreenCenter | При запуске приложения форма размещается в центре экрана |
Formstyle | fsStayOnTop | Форма всегда должна располагаться поверх остальных окон для удобства использования средств навигации при просмотре фильма |
BorderStyle | bsDialog | Будут сокрыты кнопки сворачивания и восстановления формы. Кроме того, будет невозможно изменить размеры окна |
2.2. Теперь разместим на форме компонент Edit (текстовое поле) со вкладки Standard палитры компонентов.
|
Этот компонент будем использовать для ввода пути к видео-файлу.
Присвоим свойствам компонента Edit1 значения согласно таблице.
Свойство | Значение | Пояснение |
Text | C:\Windows \Media\Вход в Windows.wav | укажем путь к файлу, который должен загружаться в плеере по умолчанию, |
Left | Отступ слева | |
'Гор | Отступ сверху | |
Width | Ширина поля | |
Font.Size | Шрифт |
2.3. Справа от поля Edit1 разместим кнопку — компонент Button со вкладки Standard палитры компонентов. Эта кнопка будет использоваться для выбора файла через стандартное окно обзора, поэтому свойству Button1.Caption присвоим значение
Свойства | Значение | Пояснение |
Caption | Обзор | Надпись на кнопке |
2.4. Ниже разместим средство прокрутки — компонент TrackBar со вкладки Win32 палитры компонентов.
Свойства | Значение |
Name | Scroll |
Left | |
Тор | |
Width |
2.5. Под компонентом Scroll разместим средства навигации - пять компонентов Panel ("панель") со вкладки Standard палитры компонентов . Свойствам Name компонентов Panel присвоим значения Play, Pause, Back, Forward и Stop соответственно. Значения остальных свойств, которые необходимо изменить, установим согласно таблице.
Свойства панелей, отвечающих в медиа-плеере за навигацию
Свойство | Для какой панели | Пояснение | ||||||||||||
Play | Pause | Back | Forward | Stop | ||||||||||
Caption | Воспроизведение | Пауза | Назад | Вперед | Остановить | Надпись на панели | ||||||||
Left | ||||||||||||||
Top | ||||||||||||||
Height | Высота | |||||||||||||
Width | Ширина | |||||||||||||
BevelInner | bvRaised | Внутренний край границы — приподнятый | ||||||||||||
BevelOuter | bvLowered | Внешний край границы — утопленный | ||||||||||||
2.6. Теперь разместим на форме важные компоненты, которые для пользователя будут невидны. Прежде всего, это — компонент Timer со вкладки System палитры компонентов .
|
Свойству Timer1. Enabled ("доступный") присвоим значение False ("нет"), а свойству Interval — значение 100 (обработка события OnTimer через каждые 100 миллисекунд).
2.7. Разместим на форме компонент OpenDialog со вкладки Dialogs.
Имя компонента OpenDialog свойство Name изменим на Open1, а свойству Filter ("фильтр") присвоим значение Все файлы | *.* (это означает, что при вызове диалогового окна выбора файла будут отображены все файлы). При желании, можно свойству Open 1. FileName присвоить имя того медиа-файла, который должен выбираться по умолчанию.
2.8. Теперь разместим на форме самый важный компонент нашей программы — MediaPlayer со вкладки System . Сразу же будет предложена панель, на которой размещены все кнопки, выполняющие функции плеера.
Фактически, в нашем плеере функции кнопок назначаются панелям Play, Pause, Back, Forward и Stop, поэтому свойству MediaPlayer1.Visible можно присвоить значение False — это означает, что стандартные кнопки компонента MediaPlayer во время выполнения программы будут скрыты.
3. События панелей навигации
3.1. Обработаем событие щелчка мышью на каждой из панелей (событие OnClick). Для Play обработчик этого события выглядит следующим образом:
procedure TForml.PlayClick(Sender: TObject);
begin
//связываем плеер с файлом
MediaPlayer1.FileName:= Edit1.text;
|
//инициализируем устройство
MediaPlayer1.Open;
//воспроизводим
MediaPlayer1.Play;
//устанавливаем границы прокрутки
Scroll.Max:= MediaPlayer1.TrackLength[1];
//активизируем таймер
Timer1.Enabled:= True;
end;
3.2. Для панели Pause обработчик события OnClick содержит всего лишь одну строку
procedure TForml.PauseClick(Sender: TObject);
begin
MediaPlayer1.Pause;
end;
3.3. Для панели Back:
procedure TForml.BackClick(Sender: TObject);
begin
//переводим на 100 кадров назад
MediaPlayer1.Position:= MediaPlayer1.Position - 10000;
//и продолжаем воспроизведение
MediaPlayerl.Play;
end;
3.4. Для прокрутки вперед — все то же самое, но 100 не отнимается, прибавляется
procedure TForml.ForwardClick(Sender: TObject);
begin
//переводим на 100 кадров вперед
MediaPlayer1.Position:= MediaPlayer1.Position + 10000;
//и продолжаем воспроизведение
MediaPlayer1.Play
end;
3.5. событие OnClick кнопки Stop
procedure TForml.StopClick(Sender: TObject);
begin
//останавливаем
MediaPlayer1.Stop;
//и делаем первый кадр текущим
MediaPlayer1.Position:= 1;
end;
3.6. Теперь обработаем событие щелчка мышью для каждой из панелей навигации: Play, Pause, Back, Forward и Stop, чтобы они могли срабатывать как кнопки. Для этого необходимо создать обработчик события OnMouseDown, которое возникает в момент нажатия над панелью кнопки мыши (именно этого события, а не Onclick, поскольку нам потребуется отслеживать и момент отпускания кнопки мыши). Двойной щелчок в поле выбора процедуры обработчика события OnMouseDown дает возможность написать текст программы, данный ниже.
3.6.1. Эти процедуры вставляем в программу перед процедурой Onclick для каждой клавиши и не забываем включить их заголовки (без слова TForm1)в разделе interface.
procedure TForm1. PlayMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Play.BevelInner:= bvLowered;
end;
3.6.2. Теперь создадим для этой панели обработчик событие для ОnMouseUp, которое возникает при отпускании кнопки мыши
procedure TForm1.PlayMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Play.BevelInner:= bvRaised;
end;
3.6.3. Другими словами, эффект нажатия кнопки создается путем изменения характера внешнего и внутреннего края границы панели. Создадим аналогичные обработчики для всех остальных панелей навигации, не забывая вместо имени Play указать соответствующее имя.
3.7. Создадим обработчик события OnTimer компонента Timer
procedure TForml.Timer1Timer(Sender: TObject);
begin
Scrol1.Position:= MediaPlayer1.Position;
end;
Здесь мы просто перемещаем бегунок компонента ТгаскВаг в соответствии с позицией в воспроизводимом файле.
3.8. Теперь создадим обработчик событая OnClilck кнопки Обзор
procedure TForml.ButtonlClick(Sender: TObject);
begin
If not Open1.Execute
then ShowMessage('Файл не выбран!')
else Edit1.Text:= Open1.FileName;
end;
В первой строке выполняется проверка, выбрал ли пользователь какой-либо файл или нажал кнопку Отмена. Если файл не выбран, то отображается соответствующее окно сообщения (процедура ShowMessage), в противном случае определяем полный путь к выбранному файлу (свойство FileName) и записываем его в поле Editl.
4. Обработка параметров запуска
4.1. Последнее, что мы сделаем — реализуем возможность открывать при помощи нашей программы видео- или аудио-файл, имя которого указано в качестве параметра запуска. Для этого в обработчик события OnCreate формы добавим следующий код:
procedure TForml.FormCreate(Sender: TObject);
Var
Str:String;
i:Integer;
begin
if ParamCount > 0 then
Begin
Str:= ParamStr(1);
for i:= 2 to ParamCount do
Str:= Str + ' ' + ParamStr(i);
end;
if Str <> ' ' then
Begin
Editl.Text:= Str;
Play.OnClick (Self);
end;
end;
Здесь все просто: сначала делаем проверку, передаются ли программе какие-либо параметры (if ParamCount > 0), а затем, если эти параметры присутствуют, начинаем обрабатывать их как обычный (введенный в Edit) текст.