
- •Часть 1
- •Implementation
- •Implementation
- •Implementation
- •Часть 1
- •Implementation
- •Implementation
- •Implementation
- •IBplementation
- •Implementation
- •Часть 1
- •Implementation
- •Implementation
- •Implementation
- •Implementation
- •Implementation
- •Interface
- •Часть 1
- •Interface
- •Часть 1 I. 104
- •Implementation
- •Implementation
- •Implementation
- •Часть I
- •Р ис. 1.46. Окно программы Звуки Windows
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Implementation
- •Implementation
- •Implementation
- •Implementation
- •Interface
- •Часть 1
- •168 Част
- •Implementation
- •Часть 1
- •Interface uses
- •Implementation
- •Interface
- •Implementation
- •Часть 1
- •Часть 1 I Примеры и задачи
- •Часть 1 I Примеры и задачи
- •Implementation
- •205 Часть
- •Interface
- •Implementation
- •216 Часть 1
- •Поле т ип Размер Информация
- •Часть 1
- •Implementation
- •Interface
- •Implementation
- •Implementation
- •Часть 2 Таблица 2.2 (окончание)
- •252 Часть 2
- •Часть 2 I Delphi — краткий справочник
- •Часть 2
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Buttons, MPlayer,
ExtCtrls, MMSYSTEM; type
TForml = class(TForm)
MediaPlayer: TMediaPlayer;
124
примеры и задачи
125
Рис. 1.48. Форма и окно программы CD Player
Timerl: TTimer;
BitBtnl: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Labell: TLabel;
Label2: TLabel;
Imagel: TImage;
procedure FormActivate(Sender: TObject); procedure MediaPlayerNotify(Sender: TObject); procedure BitBtnlClick(Sender: TObject); procedure TimerITimer(Sender: TObject); procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction) procedure BitBtn3Click(Sender: TObject); private
{ Private declarations } public
{ Public declarations } end;
var
Forml: TForml;
Implementation
{$R *.dfm}
var
Track: integer; // воспроизводимый трек
// начало работы программы
procedure TForml.FormActivate(Sender: TObject);
begin
MediaPlayer.Open;
{ Проверить, есть в CD-ROM Audio CD. Если в дисководе есть диск, то свойство Mode «• mpStopped. Если диска нет или дисковод открыт, то Mode = mpOpened. Тип диска можно определить по количеству треков. Если диск — CD-RCM, то на нем один трек, на аудиодиске — кол-во треков больше 1 } if (MediaPlayer.Mode ■ mpStopped) and
(MediaPlayer.Tracks > 1) then begin
BitBtnl.Enabled := True; MediaPlayer.Notify := True; end
else Timerl.Enabled := True; end;
// сигнал от MediaPlayer
procedure TForml.MediaPlayerNotify(Sender: TObject)
begin
case MediaPlayer.Mode of
mpOpened: // пользователь открыл дисковод begin
BitBtnl.Enabled := False; BitBtnl.Caption := 'Play'; BitBtnl.Tag := 0; BitBtn2.Enabled := False; BitBtn3.Enabled := False; Timerl.Enabled := True; Label2.Caption := '00:00'; end;
end;
MediaPlayer.Notify := True; and;
126
Частья
Чримеры и задачи
127
// щелчок на кнопке Play/Stop
procedure TForml.BitBtnlClick(Sender: TObject);
begin
if BitBtnl.Tag • 0
then // щелчок на кнопке Play
begin
BltBtnl.Caption := 'Stop1; BitBtn3.Enabled := True; MediaPlayer.Notify := False; MediaPlayer.Play; Timer1.Enabled :=True; BitBtnl.Tag := 1;
Track := MCI_TMSF_TRACK(MediaPlayer.Position) , end else
begin // щелчок на кнопке Stop BitBtnl.Caption := 'Play'; BitBtn3.Enabled := True; MediaPlayer.Notify := True; MediaPlayer.Stop; Timerl.Enabled := False; BitBtnl.Tag := 0; end; end;
// сигнал от таймера: вывести номер трека
// и время воспроизведения
procedure TForml.TimerlTimer(Sender: TObject);
var
trk, // трек
min, sec: byte; // время begin
if MediaPlayer.Mode = mpPlaying then
// режим воспроизведения
begin
trk := MCI_TMSF_TRACK(MediaPlayer.Position);
min := MCI_TMSF_MINUTE(MediaPlayer.Position);
sec := MCI_TMSF_SECOND(MediaPlayer.Position);
Labell.Caption :=
Format('Track %d. ', [trk] ) ;
Label2.Caption :=
Format('%d:%.2d',[min,sec]);
if trk <> Track then begin
Track := trk; if Track = 2
then BitBtn2.Enabled := True; if Track = MediaPlayer.Tracks
then BitBtn3.Enabled := False; end; exit; end;
// если дисковод открыт или в нем нет
// Audio CD, то Mode = mpOpen
// ждем диск ( mpStopped + кол-во треков > 1)
if (MediaPlayer.Mode = mpStopped) and
(MediaPlayer.Tracks > 1) then begin
Timerl.Enabled := False;
MediaPlayer.Open;
BitBtnl.Enabled := True;
MediaPlayer.Notify := True;
Labell.Caption :• 'Audio CD';
Labell.Visible := True; end;
// дисковод открыт или в дисководе нет диска
if MediaPlayer.Mode = mpOpen then
begin
Labell.Caption := 'Вставьте Audio CD'; if Labell.Visible then
Labell.Visible := False else
Labell.Visible := True; end; end;
// кнопка «
procedure TForml.BitBtn2Click(Sender: TObject);
begin
MediaPlayer.Previous; // в начало текущего трека MediaPlayer.Previous; // в начало предыдущего трека if MCI_TMSF_TRACK(MediaPlayer.Position) « 1 then BitBtn2.Enabled := False;
128
ЧастьЩ
Примеры и задачи
129
:= True;
if not BitBtn3.Enabled then BitBtn3.Enabled
end;
// кнопка »
procedure TForml.BitBtn3Click(Sender: TObject);
begin
MediaPlayer.Next;
// если перешли к последнему треку, то кнопку
// Next сделать недоступной
if MCI_TMSF_TRACK(MediaPlayer.Position) = MediaPlayer.Tracks
then BitBtn3.Enabled := False; end;
// пользователь закрыл окно программы procedure TForml.FormClose(Sender: TObject;
var Action: TCloseAction); begin
MediaPlayer.Stop; end;
end.
48. Напишите программу, используя которую можно прослушать компакт-диск. Для выбора воспроизводимого трека (мелодии) используйте компонент тгаскваг (рис. 1.49).
Рис. 1.49. Форма программы CD Player
I CD Player, (с) Культин Н.Б., 2003} unit CDp2_;