![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример программы с мультимедиа
В данной главе мы рассмотрим пример построения приложения с мультимедиа первого типа. Создайте новый проект (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 файлов
|