Воспроизведение звука
Листинг 11.2. Программа Звуки Microsoft Windows.
unit WinSound_; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCTRLs, MPlayer; type TForm1 = class (TForm) MediaPlayerl: TMediaPlayer; // медиаплеер Label1: TLabel; // информационное сообщение ListBox1: TListBox; // список WAV-файлов Label2: TLabel; // выбранный из списка файл procedure FormActivate(Sender: TObject); procedure ListBoxlClick(Sender: TObject); procedure MediaPlayerlClick(Sender: TObject; Button: TMPBtnType; var DoDefault: Boolean); private { Private declarations } public { Public declarations } end; const SOUNDPATCH='с:\winnt\media\'; // положение звуковых файлов var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormActivate(Sender: TObject); var SearchRec: TSearchRec; // структура, содержащая информацию о файле, // удовлетворяющем условию поиска begin Form1.MediaPlayer1.Play; // сформируем список WAV-файлов, находящихся // в каталоге c:\winnt\media if FindFirst(SOUNDPATCH+'*.wav', faAnyFile, SearchRec) =0 then begin // в каталоге есть файл с расширением WAV // добавим имя этого файла в список Form1.ListBox1.Items.Add(SearchRec.Name); // пока в каталоге есть другие файлы с расширением WAV while (FindNext(SearchRec) = 0) do Form1.ListBox1.Items.Add(SearchRec.Name); end; end; // щелчок на элементе списка procedure TForm1.ListBoxlClick(Sender: TObject); begin // вывести в поле метки Label2 имя выбранного файла Label2.Caption: = ListBox1.Items[ListBox1.itemlndex]; end; // щелчок на кнопке компонента Media Player procedure TForm1.MediaPlayerlClick(Sender: TObject; Button: TMPBtnType; var DoDefault: Boolean); begin if (Button = btPlay) and (Label2.Caption <> '') then begin // нажата кнопка Play with MediaPlayerl do begin FileName: = SOUNDPATCH+Label2.Caption; // имя выбранного файла Open; // открыть и проиграть звуковой файл end; end; end; end.
Воспроизведение звука сразу после запуска программы активизирует процедура обработки события onFormActivate путем применением метода Play к компоненту MediaPlayer1 (действие этого метода аналогично щелчку на кнопке Воспроизведение). Эта же процедура формирует список WAV-файлов, находящихся в каталоге C:\Winnt\Media. Для формирования списка используются функции FindFirst и FindNext, которые, соответственно, выполняют поиск первого и следующего (по отношению к последнему, найденному функцией FindFirst или FindNext) файла, удовлетворяющего указанному при вызове функций критерию. Обеим функциям в качестве параметров передаются маска WAV-файла (критерий поиска) и переменная – структура searchRec, поле Name которой в случае успешного поиска будет содержать имя файла, удовлетворяющего критерию поиска.
Щелчок на элементе списка обрабатывается процедурой TForm1.ListBox1Click, которая выводит в поле метки Label2 имя файла, выбранного пользователем (во время работы программы свойство ItemIndex содержит номер элемента списка на котором выполнен щелчок).
В результате щелчка на одной из кнопок компонента MediaPiayer1 активизируется процедура TForm1.MediaPiayer1Сlick, которая проверяет, какая из кнопок компонента была нажата. Если нажата кнопка Воспроизведение (btPlay), то в свойство FileName компонента MediaPlayer1 записывается имя выбранного пользователем файла, затем метод open загружает этот файл и активизирует процесс его воспроизведения.