Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример программы с мультимедиа






 

В данной главе мы рассмотрим пример построения приложения с мультимедиа первого типа. Создайте новый проект (File | New Project). Поместите TMediaPlayer на форму; поместите (страница WIN 3.1) компоненты TFileListBox, TDirectoryListBox, TDriveComboBox, TFilterComboBox для выбора файла. В свойстве FileList для DirectoryListBox1 и FilterComboBox1 поставьте FileListBox1. В свойстве DirList для DriveComboBox1 поставьте DirectoryListBox1. В свойстве Filter для FilterComboBox1 укажите требуемые расширения файлов:

AVI File (*.avi) | *.avi

WAVE File (*.wav) | *.wav

MIDI file (*.MID) | *.mid

Пусть мы хотим по двойному щелчку мышкой на компоненте FileListBox1 воспроизводить выбранный файл. Тогда в обработчике события OnDblClick для FileListBox1 следует записать:

 

Procedure TForm1.FileListBox1DblClick(Sender: TObject);

begin

with MediaPlayer1 do

begin

Close;

FileName: = FileListBox1.FileName;

Open;

Play;

end;

end;

 

Внешний вид формы представлен на рис.4.

 

Рис.4. Начальный вид проекта

 

Сохраните проект, запустите его, выберите нужный файл и дважды щелкните на него мышкой. MediaPlayer должен воспроизвести этот файл в отдельном окне.

Как уже говорилось выше, видеоролик можно воспроизводить внутри формы, например, на панели. Давайте слегка модифицируем проект и добавим туда панель TPanel (см. рис.5). В свойстве Display для MediaPlayer1 укажите Panel1. Нужно убрать надпись с панели (Caption) и присвоить свойству BevelOuter: = bvNone;

Чтобы переключаться при воспроизведении с окна на панель - поместите TСheckBox на форму и в обработчике события OnClick для него запишите:

 

procedure TForm1.CheckBox1Click(Sender: TObject);

var

Start_From: Longint;

begin

with MediaPlayer1 do

begin

if FileName ='' then Exit;

Start_From: = Position;

Close;

Panel1.Refresh;

 

if CheckBox1.Checked then Display: = Panel1

else Display: = NIL;

Open;

Position: = Start_From;

Play;

end;

end;

 

Запустите проект и воспроизведите видеоролик. Пощелкайте мышкой на компоненте CheckBox.

 

Рис.5. Добавлена панель для воспроизведения видео

и переключатель окно/панель

 

Во время выполнения программы может потребоваться отобразить текущее состояние объекта MediaPlayer и самого ролика (время, прошедшее с начала воспроизведения, длину ролика). Для этого у объекта TMediaPlayer есть соответствующие свойства и события: Length, Position, OnNotify и др.

Давайте добавим в проект прогресс-индикатор (TGauge), который отобразит в процентах, сколько прошло времени (см. рис.6). Для обновления показаний индикатора можно воспользоваться таймером. Поместите на форму объект TTimer и установите для него

Interval: = 100; (100 миллисекунд).

В обработчике события OnTimer нужно записать:

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

with MediaPlayer1 do

if FileName< > '' then

Gauge1.Progress: = Round(100*Position/Length);

end;

 

Запустите проект, выберите файл (AVI) и щелкните на нем два раза мышкой. При воспроизведении ролика прогресс-индикатор должен отображать процент, соответствующий прошедшему времени (см. рис.6).

 

Листинг DEMOVideo приведен ниже.

 

Unit DEMOVideo;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, ExtCtrls, Gauges, FileCtrl, StdCtrls, MPlayer;

 

type

TForm1 = class(TForm)

MediaPlayer1: TMediaPlayer;

CheckBox1: TCheckBox;

FileListBox1: TFileListBox;

DirectoryListBox1: TDirectoryListBox;

DriveComboBox1: TDriveComboBox;

FilterComboBox1: TFilterComboBox;

Panel1: TPanel;

Gauge1: TGauge;

Timer1: TTimer;

Button1: TButton;

procedure FileListBox1DblClick(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

{$R *.DFM}

 

procedure TForm1.FileListBox1DblClick(Sender: TObject);

begin

with MediaPlayer1 do

begin

Close;

Panel1.Refresh;

FileName: = FileListBox1.FileName;

Open;

Play;

end;

end;

 

procedure TForm1.Timer1Timer(Sender: TObject);

begin

with MediaPlayer1 do

if FileName< > '' then

Gauge1.Progress: = Round(100*Position/Length);

end;

 

procedure TForm1.CheckBox1Click(Sender: TObject);

var

Start_From: Longint;

begin

with MediaPlayer1 do

begin

if FileName ='' then Exit;

Start_From: = Position;

Close;

Panel1.Refresh;

 

if CheckBox1.Checked then

Display: = Panel1

else

Display: = NIL;

 

Open;

Position: = Start_From;

Play;

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

if FileListBox1.FileName ='' then Exit;

with MediaPlayer1 do

begin

Close;

Panel1.Refresh;

FileName: = FileListBox1.FileName;

Open;

end;

end;

 

end.

 

Рис.6. Законченное приложение для воспроизведения AVI, WAV

и MDI файлов






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.