Відтворення звуку
Звукові фрагменти знаходяться у файлах із розширенням WAV. Наприклад, у каталозі C:\Winnt\Media можна знайти файли зі стандартними звуками Windows.
Наступна програма (вигляд її діалогового вікна наведено на рис. 11.6, а текст - у лістингу 11.2) демонструє використання компонента ediaPiayer для відтворення звукових фрагментів, що у WAV-файлах.
Крім компонента MediaPiayer на формі знаходиться компонент ListBox і два компоненти Label, перший з яких використовується для виведення інформаційного повідомлення, другий для відображення імені WAV-файлу, вибраного користувачем зі списку.
Працює програма в такий спосіб. Після появи діалогового вікна відтворюється "Звук Microsoft", потім користувач може зі списку вибрати будь-який із каталогів C:\Windows\Media звукових файлів і після клацання на кнопціВідтворенняпочути, що знаходиться в цьому файлі.

Мал. 11.6.Форма програмиЗвуки Microsoft Windows
Значення змінених властивостей компонента MediaPlayerl наведено у табл. 11.6 значення інших властивостей залишені без зміни.
Таблиця 11.6.Значення властивостей компонента MediaPlayer1
Листинг 11.2. Програма Звуки Microsoft Windows
Windows, Messages, SysUtils,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MPlayer;
MediaPlayerl: TMediaPlayer; // медіаплеєр
Label1: TLabel; // інформаційне повідомлення
ListBox1: TListBox; // Список WAV-файлів
Label2: TLabel; // вибраний зі списку файл
procedureFormActivate(Sender: TObject);
procedureListBoxlClick(Sender: TObject);
procedureMediaPlayerlClick(Sender: TObject; Button: TMPBtnType;
varDoDefault: Boolean);private
SOUNDPATCH='з:\winnt\media\'; // становище звукових файлів
procedureTForm1.FormActivate(Sender: TObject);
SearchRec: TSearchRec; // структура, що містить інформацію про файл,
// Що задовольняє умові пошуку
// сформуємо список WAV-файлів, що знаходяться
// у каталозі c:\winnt\media
ifFindFirst(SOUNDPATCH+'*.wav', faAnyFile, SearchRec) =0then
// у каталозі є файл із розширенням WAV
// додамо ім'я цього файлу до списку
// поки що в каталозі є інші файли з розширенням WAV
while(FindNext(SearchRec) = 0) do
// Клацніть на елементі списку
procedureTForm1.ListBoxlClick(Sender: TObject);
// вивести в поле мітки Label2 ім'я вибраного файлу
// Клацніть на кнопці компонента Media Player
procedureTForm1.MediaPlayerlClick(Sender: TObject; Button: TMPBtnType;
varDoDefault: Boolean);begin
if(Button = btPlay)and(Label2.Caption<> '') then
// натиснута кнопка Play
FileName:=SOUNDPATCH+Label2.Caption; // ім'я вибраного файлу
Open; // відкрити та програти звуковий файл
Відтворення звуку відразу після запуску програми активізує процедуру обробки події onFormActivate шляхом застосування методу Play до компонента MediaPlayerl (дія цього методу аналогічно клацанню на кнопціВідтворення).Ця ж процедура формує список WAV-файлів, що знаходяться в каталозі C:\ Winnt\Media. Для формування списку використовуються функції FindFirst та FindNext, які,відповідно, виконують пошук першого і наступного (стосовно останнього, знайденого функцією FindFirst або FindNext) файлу, що задовольняє вказаному при виклику функцій критерію. Обом функціям як параметри передаються маска WAV-файлу (критерій пошуку) і змінна - структура searchRec, поле Name якої у разі успішного пошуку міститиме ім'я файлу, що задовольняє критерію пошуку.
Клацніть на елементі списку обробляється процедурою TForm1.ListBox1Click, яка виводить у полі мітки Label2 ім'я файлу, вибраного користувачем (під час роботи програми властивість ItemIndex містить номер елемента списку, на якому виконано клацання).
В результаті натискання на одній з кнопок компонента MediaPiayeri активізується процедура TForm1.MediaPiayer1Сlick, яка перевіряє, яка з кнопок компонента була натиснута. Якщо натиснута кнопкаВідтворення(btPlay), то властивість FileNameкомпонентаMediaPiayeriзаписуєтьсяім'я обраного користувачем файлу, потім метод open завантажує цей файл і активізує процес його відтворення.
Наявність у компонента MediaPiayer властивості visible дозволяє приховати компонент від користувача і використовувати його для відтворення звуку без участі користувача. Наприклад, наступна програма перераховує вагу з фунтів кілограми і супроводжує видачу результату звуковим сигналом. У випадку, якщо користувач забуде ввести вихідні дані або введе їх неправильно, програма виведе повідомлення про помилку, що також супроводжується звуковим сигналом. Вигляд діалогового вікна програми під час її розробки наведено на рис. 11.7 значення властивостей компонента MediaPlaer в табл. 11.7. Текст модуля програми наведено у лістингу 11.3.

Мал. 11.7.Діалоговевікно програмиФунти-кілограми
Таблиця 11.7.Значення властивостей компонента MediaPiayer1