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

Interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, MPlayer, Buttons, StdCtrls;

MediaPlayeri SpeedButton2 SpeedButton!


120

Рис. 1.47. Форма программы Video Player

type

TForml = class(TForm) OpenDialog: TOpenDialog; SpeedButtonl: TSpeedButton; SpeedButton2: TSpeedButton; MediaPlayer: TMediaPlayer; procedure FormCreate(Sender: TObject); procedure SpeedB.utton2Click (Sender: TObject); procedure SpeedButtonlClick(Sender: TObject); procedure MediaPlayerNotifу(Sender TObject);

private

( Private declarations } public

{ Public declarations ) end;

var

Forml: TForml;

Implementation

{$R *.dfm}

Примеры и задачи

procedure TForml.FormCreate(Sender: TObject);

begin

MediaPlayer.Display := Forml;

// это можно сделать во время создания // формы. Но на всякий случай . . . SpeedButtonl.Grouplndex := 1; SpeedButtonl.AllowAllUp := True; end;

// возвращает размер изображения AVI-файла procedure DimAvi(f: string; var w,h: integer); var

fst: TFileStream;

// структуру заголовка AVI-файла можно

// найти, например, в . .\CBuilder\Include\aviriff.h

RIFF: array[1. nul: array[1. AVIH: array[1. nu2: array[1.

Width: Longlnt; Height: Longlnt;

header: record

.4] of char; // 'RIFF'

.5] of Longlnt; // не используется

.4] of char; // 'avih'

.9] of Longlnt; // не используется

end;

fst := TFileStream.Create(f,fmOpenRead); fst.Read(header,sizeof(header)); w := header.Width; h := header.Height; fst.Destroy;

end;

// щелчок на кнопке Eject — выбор файла

procedure TForml.SpeedButton2Click(Sender: TObject);

var

top,left: integer; // левый верхний угол "экрана" width,height: integer; //размер экрана mw,mh: integer; // максимально возможный размер экрана kh,kw: real; // коэф-ты масштабирования по h и w к: real; // коэф-т масштабирования

121

122

юы и задачи

123

begin

OpenDialog.Title := 'Выбор клипа'; if not OpenDialog.Execute then exit;

// пользователь выбрал файл

// определим размер и положение

// "экрана" (области на поверхности формы),

// на котором будет выведен клип

DimAvi(OpenDialog.FileName,width,height);

mh:=SpeedButtonl.Top — 10; mw:=Forml.ClientWidth;

if mh > height then kh :=1 else kh := mh/height;

if mw > width then kw :=1 else kw := mw/width;

begin

// начать воспроизведение

MediaPlayer.Play;

SpeedButtonl.Hint := 'Stop'; end else begin

// остановить воспроизведение

MediaPlayer.Stop;

SpeedButtonl.Hint := 'Play'; end; end;

// сигнал от плеера

procedure TForml.MediaPlayerNotify(Sender: TObject);

begin

if (MediaPlayer.Mode = mpStopped)

and SpeedButtonl.Down then

SpeedButtonl.Down := False; // "отжать" кнопку Play

end;

kw

kh;

if kw < kh then k else k

// здесь масштаб определен

width := Round(width * к); height := Round(height * к);

left := (Forml.ClientWidth — width) div 2; top := 10;

MediaPlayer.FileName := OpenDialog.FileName; MediaPlayer.Open;

MediaPlayer.DisplayRect := Rect(left,top,width,height); SpeedButtonl.Enabled := True; end;

// щелчок на кнопке Play/Stop

procedure TForml.SpeedButtonlClick(Sender: TObject);

begin

if SpeedButtonl.Down then

end.

47. Напишите программу, используя которую можно прослу­шать компакт-диск. Во время воспроизведения в диалоговом окне должен отображаться номер воспроизводимого трека и время воспроизведения. Рекомендуемый вид формы и окно про­граммы приведены на рис. 1.48.

( Проигрыватель Audio CD.

(с) Культин Н.Б., 2003 ) unit CDp_;