Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ эффСкты». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 26

Автор Π’Π°Π»Π΅Ρ€ΠΈΠΉ Борисок

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ создания ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ врСмя, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° воспроизвСдСния Ρ„Π°ΠΉΠ»Π°. Для этого обратимся ΠΊ свойствам ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° MediaPlayer, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ Length (Π΄Π»ΠΈΠ½Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°) ΠΈ Position (тСкущая позиция Π² Π½Π΅ΠΌ). Зная ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π°Π½Π΅Π΅ рассмотрСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ FileLangToStr Π½Π°ΠΉΡ‚ΠΈ врСмя воспроизвСдСния (листинг 5.7).

...

Листинг 5.7.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ обновлСния ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²

procedure TSoundPlayerForm.UpdateViewTime;

var

//Π”Π»ΠΈΠ½Π° Ρ„Π°ΠΉΠ»Π° ΠΈ позиция Π² Ρ„Π°ΠΉΠ»Π΅

leng, posit: longint;

begin

//Находим Π΄Π»ΠΈΠ½Ρƒ воспроизводимого Ρ„Π°ΠΉΠ»Π°

leng := mdpSoundPlayer.Length;

//Находим ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² воспроизводимом Ρ„Π°ΠΉΠ»Π΅

posit := mdpSoundPlayer.Position;

//ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ врСмя Π² строку

lbMainTime.Caption := FileLangToStr(posit);

//УстанавливаСм имя Ρ„Π°ΠΉΠ»Π°

lbFileName.Caption := mdpSoundPlayer.FileName;

end;

Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ· листинга 5.7, послС получСния ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ воспроизвСдСния ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ lbMainTime ΠΈ lbFileName соотвСтствСнно.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π° Π² ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ происходит ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ· листинга 5.8. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ Π½Π°ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ UpdateViewTime ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ (tmTimer. Enabled:= true).

...

Листинг 5.8.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°

procedure TSoundPlayerForm.bnOpenFileClick(Sender: TObject);

begin

if opdOpenDialog.Execute=true then

begin

//ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»

mdpSoundPlayer.FileName := opdOpenDialog.FileName;

mdpSoundPlayer.Open;

//УстанавливаСм значСния Π² ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ…

UpdateViewTime;

//Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€

tmTimer.Enabled := true;

end;

end;

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ срабатывания Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ обновлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² (UpdateViewTime) (листинги 5.9 ΠΈ 5.10).

...

Листинг 5.9.

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

procedure TSoundPlayerForm.tmTimerTimer(Sender: TObject);

begin

//ОбновлСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ экрана

UpdateViewTime;

end;

...

Листинг 5.10.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹

procedure TSoundPlayerForm.FormActivate(Sender: TObject);

begin

//Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

tmTimer.Enabled := false;

//Π—Π°Π΄Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

lbMainTime.Caption := \'00:00\

lbFileName.Caption := \'no file…\

// Установка Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² для Π΄ΠΈΠ°Π»ΠΎΠ³Π°

opdOpenDialog.Filter :=

\'MP3 music (*.mp3)|*.MP3|Wav files (*.wav)|*.WAV\

end;

ΠŸΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π²ΡƒΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ. Для ΠΏΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄ Π½Π° Π΄Π΅ΡΡΡ‚ΡŒ сСкунд Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒΒ», Π½Π°Π·Π°Π΄ – Β«(листинги 5.11 ΠΈ 5.12).

...

Листинг 5.11.

ΠŸΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° Π²ΠΏΠ΅Ρ€Π΅Π΄

procedure TSoundPlayerForm.bnNextStClick(Sender: TObject);

begin

if mpCanPlay in mdpSoundPlayer.Capabilities then

begin

if (mdpSoundPlayer.Position+perem)<=mdpSoundPlayer.Length then

mdpSoundPlayer.Position := mdpSoundPlayer.Position + perem

else

mdpSoundPlayer.Position := mdpSoundPlayer.Length;

mdpSoundPlayer.Play;

end;

end;

...

Листинг 5.12.

ΠŸΠ΅Ρ€Π΅ΠΌΠΎΡ‚ΠΊΠ° Π½Π°Π·Π°Π΄

procedure TSoundPlayerForm.bnPrevStClick(Sender: TObject);

begin

if mpCanPlay in mdpSoundPlayer.Capabilities then

begin

if mdpSoundPlayer.Position>=perem then

mdpSoundPlayer.Position := mdpSoundPlayer.Position – perem

else

mdpSoundPlayer.Position := 0;

mdpSoundPlayer.Play;

end;

end;

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ располагаСт Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ возмоТностСй. Но ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹ΠΌ прСимущСством, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ простотой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, созданная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠœΠ Π—-Ρ„Π°ΠΉΠ»Ρ‹. Π­Ρ‚ΠΎ становится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря использованию ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния – ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ², установлСнных Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС. БоврСмСнная ΠΈ достаточно распространСнная опСрационная систСма Windows Π₯Π  содСрТит Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ΄Π΅ΠΊΠΈ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠΉ поставки. ΠŸΡ€ΠΈ использовании созданного проигрыватСля Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах Ρ‚ΠΈΠΏΠ° Windows, вСроятно, понадобится ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ установка ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ².

На этом этапС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ построСния проигрыватСля Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… записСй Π²Π°ΠΌ извСстСн. Π§Ρ‚ΠΎ касаСтся просмотра видСозаписСй, Ρ‚ΠΎ благодаря ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° MediaPLayer ΠΎΠ½ схоТ с воспроизвСдСниСм Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

5.5. Π’ΠΈΠ΄Π΅ΠΎΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ

НС ΠΌΠ΅Π½Π΅Π΅ интСрСсной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, рассмотрСнной Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой Π³Π»Π°Π²Ρ‹, являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° проигрыватСля Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»ΠΎΠ². Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π²ΠΈΠ΄Π΅ΠΎ присутствуСт достаточно большоС количСство, Π½ΠΎ самым распространСнным ΠΈΠ· Π½ΠΈΡ…, нСсомнСнно, являСтся AVI. Учитывая этот Ρ„Π°ΠΊΡ‚, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»ΠΎΠ² Π² AVI-Ρ„ΠΎΡ€-ΠΌΠ°Ρ‚Π΅.

Учитывая Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ срСда Delphi прСдоставляСт высокоуровнСвый доступ ΠΊ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΌ возмоТностям ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, сам ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ построСния проигрыватСля Π½Π΅ мСняСтся. Как ΠΈ Π² случаС со Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Π²Π°ΠΌ Ρ€Π°Π½Π΅Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ MediaPLayer. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ воспроизвСдСния Π²ΠΈΠ΄Π΅ΠΎ являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π²ΠΎΠ΄ изобраТСния Π½Π° экран Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΌΡƒ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³Ρƒ Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Π² качСствС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² для воспроизвСдСния Π² Π½ΠΈΡ… Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ°.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ ΠΊ созданию проигрыватСля Π²ΠΈΠ΄Π΅ΠΎ (рис. 5.4). Как ΠΈ Π² случаС Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ проигрыватСля, Π½Π°ΠΌ понадобятся: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ MediaPLayer, Π΄ΠΈΠ°Π»ΠΎΠ³ для открытия Ρ„Π°ΠΉΠ»ΠΎΠ² OpenDiaLog, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для Π²Ρ‹Π²ΠΎΠ΄Π° изобраТСния (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ GroupBox). НастраиваСм Ρ„ΠΎΡ€ΠΌΡƒ прилоТСния. Π£Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ максимизации, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½Π° являСтся лишнСй: присваиваСм свойству biMaximaze, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ находится Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Borderlcons, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False. УстанавливаСм BorderStyle Ρ€Π°Π²Π½Ρ‹ΠΌ bsSingle. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹. Для удобства использования ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ появляСтся Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ экрана, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, свойство Position устанавливаСм KaKpoScreenCenter. Π’ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ MediaPLayer оставляСм Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π°Ρ‡Π°Π»Π°, ΠΏΠ°ΡƒΠ·Ρ‹ ΠΈ остановки воспроизвСдСния (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»Π΅ Π·Π²ΡƒΠΊΠ°). ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ GroupBox, свойство Caption устанавливаСм пустой строкой, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Рис. 5.4. Π’ΠΈΠ΄ видСопроигрыватСля

Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ особСнности созданного видСопроигрыватСля. Π’ качСствС элСмСнта-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для динамичСского изобраТСния использовался ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ GroupBox, поэтому Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹Π»ΠΎ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ элСмСнтом Π²Ρ‹Π²ΠΎΠ΄Π° Π²ΠΈΠ΄Π΅ΠΎ для MediaPLayer. Π­Ρ‚ΠΎΡ‚ процСсс сводится ΠΊ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡŽ свойству Display ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° MediaPLayer экзСмпляра ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° GroupBox. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ это Π²ΠΎ врСмя Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ (листинг 5.13).

...

Листинг 5.13.

НазначСниС элСмСнта Π²Ρ‹Π²ΠΎΠ΄Π° изобраТСния

procedure TFormVideoPlayer.FormActivate(Sender: TObject);

begin

//УстанавливаСм ΠΎΠ±Π»Π°ΡΡ‚ΡŒ воспроизвСдСния

mpVideoPlayer.Display := gbViewVideo;

end;

Π’ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ пСрСмСнная gbViewVideo являСтся экзСмпляром ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° GroupBox.

Π’ качСствС Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° простоты, удобства ΠΈ гибкости использования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° MediaPLayer ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ вСсь исходный тСкст прилоТСния (листинг 5.14).

...

Листинг 5.14.

Π’ΠΈΠ΄Π΅ΠΎΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ

unit video_player;

interface

uses

//ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, MPlayer;

Type

//Главная Ρ„ΠΎΡ€ΠΌΠ° прилоТСния

TFormVideoPlayer = class(TForm)

mpVideoPlayer: TMediaPlayer;

FileOpenDlg: TOpenDialog;

gbViewVideo: TGroupBox;

bnOpenFile: TButton;

//НаТатиС ΠΊΠ½ΠΎΠΏΠΊΠΈ открытия Ρ„Π°ΠΉΠ»Π°

procedure bnOpenFileClick(Sender: TObject);

//Активизация Ρ„ΠΎΡ€ΠΌΡ‹

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormVideoPlayer: TFormVideoPlayer;

implementation

{$R *.dfm}

procedure TFormVideoPlayer.bnOpenFileClick(Sender: TObject);

begin

if FileOpenDlg.Execute = True then

begin

//Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Ρ„Π°ΠΉΠ», Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ открытия Ρ„Π°ΠΉΠ»Π°

mpVideoPlayer.FileName := FileOpenDlg.FileName;

//АктивизируСм ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ

mpVideoPlayer.Open;

end;

end;

procedure TFormVideoPlayer.FormActivate(Sender: TObject);

begin

//УстанавливаСм ΠΎΠ±Π»Π°ΡΡ‚ΡŒ воспроизвСдСния

mpVideoPlayer.Display := gbViewVideo;

end;

end.

Из ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ, обладая ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ объСмом исходного тСкста, Π²ΠΈΠ΄Π΅ΠΎΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π“Π»Π°Π²Π° 6 ИспользованиС Windows GDI

β€’ Π“рафичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

β€’ ΠΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-нСзависимыи графичСский Π²Ρ‹Π²ΠΎΠ΄

β€’ ΠšΠΎΠ½Ρ‚Скст устройства

β€’ Π“рафичСскиС Ρ€Π΅ΠΆΠΈΠΌΡ‹

β€’ Π Π°Π±ΠΎΡ‚Π° со ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ

β€’ Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²

β€’ Π Π°Π±ΠΎΡ‚Π° с тСкстом

β€’ Π Π°Π±ΠΎΡ‚Π° с растровыми изобраТСниями

β€’ ΠΠ»ΡŒΡ„Π°-смСшиваниС

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Windows с самого Π½Π°Ρ‡Π°Π»Π° создавалась ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΊΠ°ΠΊ графичСская ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ°. И ΠΊΠ°ΠΊ слСдствиС, Π² Π½Π΅ΠΉ осущСствляСтся графичСскоС прСдставлСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ΠΏΠΎΠ»Π½Π΅ СстСствСнным являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ любоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ экран для отобраТСния Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, сама опСрационная систСма ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π° экранС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Windows обСспСчиваСт ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прСдставлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊ Π½Π° экранС, Ρ‚Π°ΠΊ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… устройствах Π²Ρ‹Π²ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π΅. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ отобраТСния. БистСма ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ опрСдСляСт Ρ†Π΅Π»Π΅Π²ΠΎΠ΅ устройство ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. ОБ Windows являСтся ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΠΉ ΠΈ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΊ прилоТСниям ряд основных Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄Π°. Однако это вовсС Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Windows обСспСчиваСт прилоТСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран ΠΈΠ»ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ – систСма ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ управляСт всСм Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ. НавСрноС, Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠΊΠ½ΠΎ, Π° Π½Π΅ нСпосрСдствСнно экран. КаТдоС устройство Π²Ρ‹Π²ΠΎΠ΄Π° Π² Windows характСризуСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², с использованиСм ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… происходит собствСнно Π²Ρ‹Π²ΠΎΠ΄. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ соотвСтствуСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ устройство Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ доступ ΠΊ послСднСму, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ процСсса Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ.