Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Примеры и задачи.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.66 Mб
Скачать

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_;